ETH Price: $3,236.05 (-1.08%)

Token

The RetroZone (RZONE)
 

Overview

Max Total Supply

100,000,000 RZONE

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
800,000 RZONE

Value
$0.00
0x40eadf38a58a643958954cc9c2f6f4d06be409a0
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:
RetroZoneArcade

Compiler Version
v0.8.0+commit.c7dfd78e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-17
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/**
 * https://www.jonathanalmonte.com/retrozone
 * help me build a community around my blockchain gaming app
 * The RetroZone Arcade // 
 * Contact me: 
 * https://www.linkedin.com/in/jonathan-almonte-a4986621b/
 * t.me/JonAlmonte
 */

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

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
    );
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract RetroZoneArcade is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "The RetroZone";
    string private constant _symbol = "RZONE";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 100000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 0;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 0;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    mapping (address => bool) public preTrader;
    address payable private _developmentAddress = payable(0xc365B3783323442783BBa16c011B7a89DD1474b2);
    address payable private _marketingAddress = payable(0xc365B3783323442783BBa16c011B7a89DD1474b2);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 1000000 * 10**9;
    uint256 public _maxWalletSize = 1500000 * 10**9;
    uint256 public _swapTokensAtAmount = 10000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        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 _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        	if (from != owner() && to != owner() && !preTrader[from] && !preTrader[to]) {

            //Trade start check
            if (!tradingOpen) {
                require(preTrader[from], "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

    function allowPreTrading(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 preTrader[accounts[i]] = true;
        }
    }

    function removePreTrading(address[] calldata accounts) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
                 delete preTrader[accounts[i]];
        }
    }
}

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":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"allowPreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"preTrader","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removePreTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","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"},{"stateMutability":"payable","type":"receive"}]

608060405267016345785d8a00006000196200001c91906200082d565b6000196200002b9190620007b4565b600655600060085560006009556000600a556000600b55600a54600c55600b54600d55600c54600e55600d54600f5573c365b3783323442783bba16c011b7a89dd1474b2601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073c365b3783323442783bba16c011b7a89dd1474b2601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff02191690831515021790555066038d7ea4c680006017556605543df729c0006018556509184e72a0006019553480156200016657600080fd5b50600062000179620006d460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030d57600080fd5b505afa15801562000322573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200034891906200071c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003ab57600080fd5b505afa158015620003c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e691906200071c565b6040518363ffffffff1660e01b8152600401620004059291906200076a565b602060405180830381600087803b1580156200042057600080fd5b505af115801562000435573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045b91906200071c565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004b1620006dc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200065e620006d460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef67016345785d8a0000604051620006c5919062000797565b60405180910390a350620008dd565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000815190506200071681620008c3565b92915050565b6000602082840312156200072f57600080fd5b60006200073f8482850162000705565b91505092915050565b6200075381620007ef565b82525050565b620007648162000823565b82525050565b600060408201905062000781600083018562000748565b62000790602083018462000748565b9392505050565b6000602082019050620007ae600083018462000759565b92915050565b6000620007c18262000823565b9150620007ce8362000823565b925082821015620007e457620007e362000865565b5b828203905092915050565b6000620007fc8262000803565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006200083a8262000823565b9150620008478362000823565b9250826200085a576200085962000894565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b620008ce81620007ef565b8114620008da57600080fd5b50565b61419680620008ed6000396000f3fe6080604052600436106101f15760003560e01c80637d1db4a51161010d578063a9059cbb116100a0578063c3c8cd801161006f578063c3c8cd80146106f5578063c492f0461461070c578063dd62ed3e14610735578063ea1644d514610772578063f2fde38b1461079b576101f8565b8063a9059cbb14610615578063b5a6522314610652578063bdd795ef1461067b578063bfd79284146106b8576101f8565b80638f9a55c0116100dc5780638f9a55c01461056d57806395d89b411461059857806398a5c315146105c3578063a2a957bb146105ec576101f8565b80637d1db4a5146104b15780637f2feddc146104dc5780638da5cb5b146105195780638f70ccf714610544576101f8565b806349bd5a5e116101855780636fc3eaec116101545780636fc3eaec1461041d57806370a0823114610434578063715018a61461047157806374010ece14610488576101f8565b806349bd5a5e1461037757806367aadb7e146103a25780636b999053146103cb5780636d8aa8f8146103f4576101f8565b806318160ddd116101c157806318160ddd146102b957806323b872dd146102e45780632fd689e314610321578063313ce5671461034c576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780631694505e1461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f9190613394565b6107c4565b005b34801561023257600080fd5b5061023b610914565b6040516102489190613b15565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906132bb565b610951565b6040516102859190613adf565b60405180910390f35b34801561029a57600080fd5b506102a361096f565b6040516102b09190613afa565b60405180910390f35b3480156102c557600080fd5b506102ce610995565b6040516102db9190613cf7565b60405180910390f35b3480156102f057600080fd5b5061030b6004803603810190610306919061326c565b6109a5565b6040516103189190613adf565b60405180910390f35b34801561032d57600080fd5b50610336610a7e565b6040516103439190613cf7565b60405180910390f35b34801561035857600080fd5b50610361610a84565b60405161036e9190613d6c565b60405180910390f35b34801561038357600080fd5b5061038c610a8d565b6040516103999190613ac4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906132f7565b610ab3565b005b3480156103d757600080fd5b506103f260048036038101906103ed91906131de565b610c0a565b005b34801561040057600080fd5b5061041b600480360381019061041691906133d5565b610cfa565b005b34801561042957600080fd5b50610432610dab565b005b34801561044057600080fd5b5061045b600480360381019061045691906131de565b610e7c565b6040516104689190613cf7565b60405180910390f35b34801561047d57600080fd5b50610486610ecd565b005b34801561049457600080fd5b506104af60048036038101906104aa91906133fe565b611020565b005b3480156104bd57600080fd5b506104c66110bf565b6040516104d39190613cf7565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe91906131de565b6110c5565b6040516105109190613cf7565b60405180910390f35b34801561052557600080fd5b5061052e6110dd565b60405161053b9190613ac4565b60405180910390f35b34801561055057600080fd5b5061056b600480360381019061056691906133d5565b611106565b005b34801561057957600080fd5b506105826111b8565b60405161058f9190613cf7565b60405180910390f35b3480156105a457600080fd5b506105ad6111be565b6040516105ba9190613b15565b60405180910390f35b3480156105cf57600080fd5b506105ea60048036038101906105e591906133fe565b6111fb565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613427565b61129a565b005b34801561062157600080fd5b5061063c600480360381019061063791906132bb565b611351565b6040516106499190613adf565b60405180910390f35b34801561065e57600080fd5b50610679600480360381019061067491906132f7565b61136f565b005b34801561068757600080fd5b506106a2600480360381019061069d91906131de565b6114cf565b6040516106af9190613adf565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da91906131de565b6114ef565b6040516106ec9190613adf565b60405180910390f35b34801561070157600080fd5b5061070a61150f565b005b34801561071857600080fd5b50610733600480360381019061072e919061333c565b6115e8565b005b34801561074157600080fd5b5061075c60048036038101906107579190613230565b611748565b6040516107699190613cf7565b60405180910390f35b34801561077e57600080fd5b50610799600480360381019061079491906133fe565b6117cf565b005b3480156107a757600080fd5b506107c260048036038101906107bd91906131de565b61186e565b005b6107cc611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090613c57565b60405180910390fd5b60005b8151811015610910576001601060008484815181106108a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109089061400c565b91505061085c565b5050565b60606040518060400160405280600d81526020017f54686520526574726f5a6f6e6500000000000000000000000000000000000000815250905090565b600061096561095e611a30565b8484611a38565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006109b2848484611c03565b610a73846109be611a30565b610a6e8560405180606001604052806028815260200161413960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a24611a30565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254b9092919063ffffffff16565b611a38565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610abb611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90613c57565b60405180910390fd5b60005b82829050811015610c055760126000848484818110610b93577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610ba891906131de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080610bfd9061400c565b915050610b4b565b505050565b610c12611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9690613c57565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d02611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8690613c57565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dec611a30565b73ffffffffffffffffffffffffffffffffffffffff161480610e625750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4a611a30565b73ffffffffffffffffffffffffffffffffffffffff16145b610e6b57600080fd5b6000479050610e79816125af565b50565b6000610ec6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261b565b9050919050565b610ed5611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990613c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611028611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613c57565b60405180910390fd5b8060178190555050565b60175481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61110e611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290613c57565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600581526020017f525a4f4e45000000000000000000000000000000000000000000000000000000815250905090565b611203611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790613c57565b60405180910390fd5b8060198190555050565b6112a2611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132690613c57565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061136561135e611a30565b8484611c03565b6001905092915050565b611377611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90613c57565b60405180910390fd5b60005b828290508110156114ca57600160126000858585818110611451577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061146691906131de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114c29061400c565b915050611407565b505050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611550611a30565b73ffffffffffffffffffffffffffffffffffffffff1614806115c65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115ae611a30565b73ffffffffffffffffffffffffffffffffffffffff16145b6115cf57600080fd5b60006115da30610e7c565b90506115e581612689565b50565b6115f0611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490613c57565b60405180910390fd5b60005b838390508110156117425781600560008686858181106116c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906116de91906131de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061173a9061400c565b915050611680565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117d7611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90613c57565b60405180910390fd5b8060188190555050565b611876611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90613c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90613bb7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f90613cd7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f90613bd7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bf69190613cf7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613c97565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90613b37565b60405180910390fd5b60008111611d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1d90613c77565b60405180910390fd5b611d2e6110dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d9c5750611d6c6110dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611df25750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e485750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561224a57601660149054906101000a900460ff16611eee57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee490613b57565b60405180910390fd5b5b601754811115611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613b97565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fd75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90613bf7565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120c3576018548161207884610e7c565b6120829190613e39565b106120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990613cb7565b60405180910390fd5b5b60006120ce30610e7c565b90506000601954821015905060175482106120e95760175491505b8080156121035750601660159054906101000a900460ff16155b801561215d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612173575060168054906101000a900460ff165b80156121c95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561221f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122475761222d82612689565b6000479050600081111561224557612244476125af565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122f15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123a45750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156123a35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156123b25760009050612539565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561245d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561247557600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156125205750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561253857600a54600c81905550600b54600d819055505b5b61254584848484612983565b50505050565b6000838311158290612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a9190613b15565b60405180910390fd5b50600083856125a29190613f1a565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612617573d6000803e3d6000fd5b5050565b6000600654821115612662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265990613b77565b60405180910390fd5b600061266c6129b0565b905061268181846129db90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156126e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127155781602001602082028036833780820191505090505b5090503081600081518110612753577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156127f557600080fd5b505afa158015612809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282d9190613207565b81600181518110612867577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128ce30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a38565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612932959493929190613d12565b600060405180830381600087803b15801561294c57600080fd5b505af1158015612960573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b8061299157612990612a25565b5b61299c848484612a68565b806129aa576129a9612c33565b5b50505050565b60008060006129bd612c47565b915091506129d481836129db90919063ffffffff16565b9250505090565b6000612a1d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ca6565b905092915050565b6000600c54148015612a3957506000600d54145b15612a4357612a66565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612a7a87612d09565b955095509550955095509550612ad886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dbb90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bb981612e19565b612bc38483612ed6565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612c209190613cf7565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a00009050612c7b67016345785d8a00006006546129db90919063ffffffff16565b821015612c995760065467016345785d8a0000935093505050612ca2565b81819350935050505b9091565b60008083118290612ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce49190613b15565b60405180910390fd5b5060008385612cfc9190613e8f565b9050809150509392505050565b6000806000806000806000806000612d268a600c54600d54612f10565b9250925092506000612d366129b0565b90506000806000612d498e878787612fa6565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612db383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061254b565b905092915050565b6000808284612dca9190613e39565b905083811015612e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0690613c17565b60405180910390fd5b8091505092915050565b6000612e236129b0565b90506000612e3a828461302f90919063ffffffff16565b9050612e8e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dbb90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612eeb82600654612d7190919063ffffffff16565b600681905550612f0681600754612dbb90919063ffffffff16565b6007819055505050565b600080600080612f3c6064612f2e888a61302f90919063ffffffff16565b6129db90919063ffffffff16565b90506000612f666064612f58888b61302f90919063ffffffff16565b6129db90919063ffffffff16565b90506000612f8f82612f81858c612d7190919063ffffffff16565b612d7190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612fbf858961302f90919063ffffffff16565b90506000612fd6868961302f90919063ffffffff16565b90506000612fed878961302f90919063ffffffff16565b90506000613016826130088587612d7190919063ffffffff16565b612d7190919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561304257600090506130a4565b600082846130509190613ec0565b905082848261305f9190613e8f565b1461309f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309690613c37565b60405180910390fd5b809150505b92915050565b60006130bd6130b884613db8565b613d87565b905080838252602082019050828560208602820111156130dc57600080fd5b60005b8581101561310c57816130f28882613116565b8452602084019350602083019250506001810190506130df565b5050509392505050565b600081359050613125816140f3565b92915050565b60008151905061313a816140f3565b92915050565b60008083601f84011261315257600080fd5b8235905067ffffffffffffffff81111561316b57600080fd5b60208301915083602082028301111561318357600080fd5b9250929050565b600082601f83011261319b57600080fd5b81356131ab8482602086016130aa565b91505092915050565b6000813590506131c38161410a565b92915050565b6000813590506131d881614121565b92915050565b6000602082840312156131f057600080fd5b60006131fe84828501613116565b91505092915050565b60006020828403121561321957600080fd5b60006132278482850161312b565b91505092915050565b6000806040838503121561324357600080fd5b600061325185828601613116565b925050602061326285828601613116565b9150509250929050565b60008060006060848603121561328157600080fd5b600061328f86828701613116565b93505060206132a086828701613116565b92505060406132b1868287016131c9565b9150509250925092565b600080604083850312156132ce57600080fd5b60006132dc85828601613116565b92505060206132ed858286016131c9565b9150509250929050565b6000806020838503121561330a57600080fd5b600083013567ffffffffffffffff81111561332457600080fd5b61333085828601613140565b92509250509250929050565b60008060006040848603121561335157600080fd5b600084013567ffffffffffffffff81111561336b57600080fd5b61337786828701613140565b9350935050602061338a868287016131b4565b9150509250925092565b6000602082840312156133a657600080fd5b600082013567ffffffffffffffff8111156133c057600080fd5b6133cc8482850161318a565b91505092915050565b6000602082840312156133e757600080fd5b60006133f5848285016131b4565b91505092915050565b60006020828403121561341057600080fd5b600061341e848285016131c9565b91505092915050565b6000806000806080858703121561343d57600080fd5b600061344b878288016131c9565b945050602061345c878288016131c9565b935050604061346d878288016131c9565b925050606061347e878288016131c9565b91505092959194509250565b600061349683836134a2565b60208301905092915050565b6134ab81613f4e565b82525050565b6134ba81613f4e565b82525050565b60006134cb82613df4565b6134d58185613e17565b93506134e083613de4565b8060005b838110156135115781516134f8888261348a565b975061350383613e0a565b9250506001810190506134e4565b5085935050505092915050565b61352781613f60565b82525050565b61353681613fa3565b82525050565b61354581613fc7565b82525050565b600061355682613dff565b6135608185613e28565b9350613570818560208601613fd9565b613579816140e2565b840191505092915050565b6000613591602383613e28565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135f7603f83613e28565b91507f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008301527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006020830152604082019050919050565b600061365d602a83613e28565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006136c3601c83613e28565b91507f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006000830152602082019050919050565b6000613703602683613e28565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613769602283613e28565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006137cf602383613e28565b91507f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008301527f65642100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613835601b83613e28565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613875602183613e28565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006138db602083613e28565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061391b602983613e28565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613981602583613e28565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006139e7602383613e28565b91507f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008301527f7a652100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613a4d602483613e28565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b613aaf81613f8c565b82525050565b613abe81613f96565b82525050565b6000602082019050613ad960008301846134b1565b92915050565b6000602082019050613af4600083018461351e565b92915050565b6000602082019050613b0f600083018461352d565b92915050565b60006020820190508181036000830152613b2f818461354b565b905092915050565b60006020820190508181036000830152613b5081613584565b9050919050565b60006020820190508181036000830152613b70816135ea565b9050919050565b60006020820190508181036000830152613b9081613650565b9050919050565b60006020820190508181036000830152613bb0816136b6565b9050919050565b60006020820190508181036000830152613bd0816136f6565b9050919050565b60006020820190508181036000830152613bf08161375c565b9050919050565b60006020820190508181036000830152613c10816137c2565b9050919050565b60006020820190508181036000830152613c3081613828565b9050919050565b60006020820190508181036000830152613c5081613868565b9050919050565b60006020820190508181036000830152613c70816138ce565b9050919050565b60006020820190508181036000830152613c908161390e565b9050919050565b60006020820190508181036000830152613cb081613974565b9050919050565b60006020820190508181036000830152613cd0816139da565b9050919050565b60006020820190508181036000830152613cf081613a40565b9050919050565b6000602082019050613d0c6000830184613aa6565b92915050565b600060a082019050613d276000830188613aa6565b613d34602083018761353c565b8181036040830152613d4681866134c0565b9050613d5560608301856134b1565b613d626080830184613aa6565b9695505050505050565b6000602082019050613d816000830184613ab5565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613dae57613dad6140b3565b5b8060405250919050565b600067ffffffffffffffff821115613dd357613dd26140b3565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613e4482613f8c565b9150613e4f83613f8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e8457613e83614055565b5b828201905092915050565b6000613e9a82613f8c565b9150613ea583613f8c565b925082613eb557613eb4614084565b5b828204905092915050565b6000613ecb82613f8c565b9150613ed683613f8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f0f57613f0e614055565b5b828202905092915050565b6000613f2582613f8c565b9150613f3083613f8c565b925082821015613f4357613f42614055565b5b828203905092915050565b6000613f5982613f6c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613fae82613fb5565b9050919050565b6000613fc082613f6c565b9050919050565b6000613fd282613f8c565b9050919050565b60005b83811015613ff7578082015181840152602081019050613fdc565b83811115614006576000848401525b50505050565b600061401782613f8c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561404a57614049614055565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6140fc81613f4e565b811461410757600080fd5b50565b61411381613f60565b811461411e57600080fd5b50565b61412a81613f8c565b811461413557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122094c388621e5887933c82151216c74359085f64ee237289218a19321b0718946264736f6c63430008000033

Deployed Bytecode

0x6080604052600436106101f15760003560e01c80637d1db4a51161010d578063a9059cbb116100a0578063c3c8cd801161006f578063c3c8cd80146106f5578063c492f0461461070c578063dd62ed3e14610735578063ea1644d514610772578063f2fde38b1461079b576101f8565b8063a9059cbb14610615578063b5a6522314610652578063bdd795ef1461067b578063bfd79284146106b8576101f8565b80638f9a55c0116100dc5780638f9a55c01461056d57806395d89b411461059857806398a5c315146105c3578063a2a957bb146105ec576101f8565b80637d1db4a5146104b15780637f2feddc146104dc5780638da5cb5b146105195780638f70ccf714610544576101f8565b806349bd5a5e116101855780636fc3eaec116101545780636fc3eaec1461041d57806370a0823114610434578063715018a61461047157806374010ece14610488576101f8565b806349bd5a5e1461037757806367aadb7e146103a25780636b999053146103cb5780636d8aa8f8146103f4576101f8565b806318160ddd116101c157806318160ddd146102b957806323b872dd146102e45780632fd689e314610321578063313ce5671461034c576101f8565b8062b8cf2a146101fd57806306fdde0314610226578063095ea7b3146102515780631694505e1461028e576101f8565b366101f857005b600080fd5b34801561020957600080fd5b50610224600480360381019061021f9190613394565b6107c4565b005b34801561023257600080fd5b5061023b610914565b6040516102489190613b15565b60405180910390f35b34801561025d57600080fd5b50610278600480360381019061027391906132bb565b610951565b6040516102859190613adf565b60405180910390f35b34801561029a57600080fd5b506102a361096f565b6040516102b09190613afa565b60405180910390f35b3480156102c557600080fd5b506102ce610995565b6040516102db9190613cf7565b60405180910390f35b3480156102f057600080fd5b5061030b6004803603810190610306919061326c565b6109a5565b6040516103189190613adf565b60405180910390f35b34801561032d57600080fd5b50610336610a7e565b6040516103439190613cf7565b60405180910390f35b34801561035857600080fd5b50610361610a84565b60405161036e9190613d6c565b60405180910390f35b34801561038357600080fd5b5061038c610a8d565b6040516103999190613ac4565b60405180910390f35b3480156103ae57600080fd5b506103c960048036038101906103c491906132f7565b610ab3565b005b3480156103d757600080fd5b506103f260048036038101906103ed91906131de565b610c0a565b005b34801561040057600080fd5b5061041b600480360381019061041691906133d5565b610cfa565b005b34801561042957600080fd5b50610432610dab565b005b34801561044057600080fd5b5061045b600480360381019061045691906131de565b610e7c565b6040516104689190613cf7565b60405180910390f35b34801561047d57600080fd5b50610486610ecd565b005b34801561049457600080fd5b506104af60048036038101906104aa91906133fe565b611020565b005b3480156104bd57600080fd5b506104c66110bf565b6040516104d39190613cf7565b60405180910390f35b3480156104e857600080fd5b5061050360048036038101906104fe91906131de565b6110c5565b6040516105109190613cf7565b60405180910390f35b34801561052557600080fd5b5061052e6110dd565b60405161053b9190613ac4565b60405180910390f35b34801561055057600080fd5b5061056b600480360381019061056691906133d5565b611106565b005b34801561057957600080fd5b506105826111b8565b60405161058f9190613cf7565b60405180910390f35b3480156105a457600080fd5b506105ad6111be565b6040516105ba9190613b15565b60405180910390f35b3480156105cf57600080fd5b506105ea60048036038101906105e591906133fe565b6111fb565b005b3480156105f857600080fd5b50610613600480360381019061060e9190613427565b61129a565b005b34801561062157600080fd5b5061063c600480360381019061063791906132bb565b611351565b6040516106499190613adf565b60405180910390f35b34801561065e57600080fd5b50610679600480360381019061067491906132f7565b61136f565b005b34801561068757600080fd5b506106a2600480360381019061069d91906131de565b6114cf565b6040516106af9190613adf565b60405180910390f35b3480156106c457600080fd5b506106df60048036038101906106da91906131de565b6114ef565b6040516106ec9190613adf565b60405180910390f35b34801561070157600080fd5b5061070a61150f565b005b34801561071857600080fd5b50610733600480360381019061072e919061333c565b6115e8565b005b34801561074157600080fd5b5061075c60048036038101906107579190613230565b611748565b6040516107699190613cf7565b60405180910390f35b34801561077e57600080fd5b50610799600480360381019061079491906133fe565b6117cf565b005b3480156107a757600080fd5b506107c260048036038101906107bd91906131de565b61186e565b005b6107cc611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610859576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085090613c57565b60405180910390fd5b60005b8151811015610910576001601060008484815181106108a4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806109089061400c565b91505061085c565b5050565b60606040518060400160405280600d81526020017f54686520526574726f5a6f6e6500000000000000000000000000000000000000815250905090565b600061096561095e611a30565b8484611a38565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600067016345785d8a0000905090565b60006109b2848484611c03565b610a73846109be611a30565b610a6e8560405180606001604052806028815260200161413960289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a24611a30565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254b9092919063ffffffff16565b611a38565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610abb611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3f90613c57565b60405180910390fd5b60005b82829050811015610c055760126000848484818110610b93577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610ba891906131de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690558080610bfd9061400c565b915050610b4b565b505050565b610c12611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9690613c57565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610d02611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8690613c57565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610dec611a30565b73ffffffffffffffffffffffffffffffffffffffff161480610e625750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e4a611a30565b73ffffffffffffffffffffffffffffffffffffffff16145b610e6b57600080fd5b6000479050610e79816125af565b50565b6000610ec6600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461261b565b9050919050565b610ed5611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5990613c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611028611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac90613c57565b60405180910390fd5b8060178190555050565b60175481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b61110e611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290613c57565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600581526020017f525a4f4e45000000000000000000000000000000000000000000000000000000815250905090565b611203611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611290576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128790613c57565b60405180910390fd5b8060198190555050565b6112a2611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461132f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132690613c57565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061136561135e611a30565b8484611c03565b6001905092915050565b611377611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611404576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fb90613c57565b60405180910390fd5b60005b828290508110156114ca57600160126000858585818110611451577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b905060200201602081019061146691906131de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114c29061400c565b915050611407565b505050565b60126020528060005260406000206000915054906101000a900460ff1681565b60106020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611550611a30565b73ffffffffffffffffffffffffffffffffffffffff1614806115c65750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115ae611a30565b73ffffffffffffffffffffffffffffffffffffffff16145b6115cf57600080fd5b60006115da30610e7c565b90506115e581612689565b50565b6115f0611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490613c57565b60405180910390fd5b60005b838390508110156117425781600560008686858181106116c9577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020020160208101906116de91906131de565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061173a9061400c565b915050611680565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6117d7611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185b90613c57565b60405180910390fd5b8060188190555050565b611876611a30565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa90613c57565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611973576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196a90613bb7565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611aa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9f90613cd7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b0f90613bd7565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bf69190613cf7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613c97565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda90613b37565b60405180910390fd5b60008111611d26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1d90613c77565b60405180910390fd5b611d2e6110dd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d9c5750611d6c6110dd565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611df25750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e485750601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561224a57601660149054906101000a900460ff16611eee57601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611eed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ee490613b57565b60405180910390fd5b5b601754811115611f33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2a90613b97565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fd75750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b612016576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161200d90613bf7565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146120c3576018548161207884610e7c565b6120829190613e39565b106120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990613cb7565b60405180910390fd5b5b60006120ce30610e7c565b90506000601954821015905060175482106120e95760175491505b8080156121035750601660159054906101000a900460ff16155b801561215d5750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612173575060168054906101000a900460ff165b80156121c95750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561221f5750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122475761222d82612689565b6000479050600081111561224557612244476125af565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122f15750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123a45750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156123a35750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b156123b25760009050612539565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561245d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561247557600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156125205750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561253857600a54600c81905550600b54600d819055505b5b61254584848484612983565b50505050565b6000838311158290612593576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161258a9190613b15565b60405180910390fd5b50600083856125a29190613f1a565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612617573d6000803e3d6000fd5b5050565b6000600654821115612662576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265990613b77565b60405180910390fd5b600061266c6129b0565b905061268181846129db90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156126e7577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156127155781602001602082028036833780820191505090505b5090503081600081518110612753577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156127f557600080fd5b505afa158015612809573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061282d9190613207565b81600181518110612867577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128ce30601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a38565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612932959493929190613d12565b600060405180830381600087803b15801561294c57600080fd5b505af1158015612960573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b8061299157612990612a25565b5b61299c848484612a68565b806129aa576129a9612c33565b5b50505050565b60008060006129bd612c47565b915091506129d481836129db90919063ffffffff16565b9250505090565b6000612a1d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612ca6565b905092915050565b6000600c54148015612a3957506000600d54145b15612a4357612a66565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b600080600080600080612a7a87612d09565b955095509550955095509550612ad886600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612d7190919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b6d85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dbb90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612bb981612e19565b612bc38483612ed6565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051612c209190613cf7565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b60008060006006549050600067016345785d8a00009050612c7b67016345785d8a00006006546129db90919063ffffffff16565b821015612c995760065467016345785d8a0000935093505050612ca2565b81819350935050505b9091565b60008083118290612ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce49190613b15565b60405180910390fd5b5060008385612cfc9190613e8f565b9050809150509392505050565b6000806000806000806000806000612d268a600c54600d54612f10565b9250925092506000612d366129b0565b90506000806000612d498e878787612fa6565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b6000612db383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061254b565b905092915050565b6000808284612dca9190613e39565b905083811015612e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e0690613c17565b60405180910390fd5b8091505092915050565b6000612e236129b0565b90506000612e3a828461302f90919063ffffffff16565b9050612e8e81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612dbb90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612eeb82600654612d7190919063ffffffff16565b600681905550612f0681600754612dbb90919063ffffffff16565b6007819055505050565b600080600080612f3c6064612f2e888a61302f90919063ffffffff16565b6129db90919063ffffffff16565b90506000612f666064612f58888b61302f90919063ffffffff16565b6129db90919063ffffffff16565b90506000612f8f82612f81858c612d7190919063ffffffff16565b612d7190919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612fbf858961302f90919063ffffffff16565b90506000612fd6868961302f90919063ffffffff16565b90506000612fed878961302f90919063ffffffff16565b90506000613016826130088587612d7190919063ffffffff16565b612d7190919063ffffffff16565b9050838184965096509650505050509450945094915050565b60008083141561304257600090506130a4565b600082846130509190613ec0565b905082848261305f9190613e8f565b1461309f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161309690613c37565b60405180910390fd5b809150505b92915050565b60006130bd6130b884613db8565b613d87565b905080838252602082019050828560208602820111156130dc57600080fd5b60005b8581101561310c57816130f28882613116565b8452602084019350602083019250506001810190506130df565b5050509392505050565b600081359050613125816140f3565b92915050565b60008151905061313a816140f3565b92915050565b60008083601f84011261315257600080fd5b8235905067ffffffffffffffff81111561316b57600080fd5b60208301915083602082028301111561318357600080fd5b9250929050565b600082601f83011261319b57600080fd5b81356131ab8482602086016130aa565b91505092915050565b6000813590506131c38161410a565b92915050565b6000813590506131d881614121565b92915050565b6000602082840312156131f057600080fd5b60006131fe84828501613116565b91505092915050565b60006020828403121561321957600080fd5b60006132278482850161312b565b91505092915050565b6000806040838503121561324357600080fd5b600061325185828601613116565b925050602061326285828601613116565b9150509250929050565b60008060006060848603121561328157600080fd5b600061328f86828701613116565b93505060206132a086828701613116565b92505060406132b1868287016131c9565b9150509250925092565b600080604083850312156132ce57600080fd5b60006132dc85828601613116565b92505060206132ed858286016131c9565b9150509250929050565b6000806020838503121561330a57600080fd5b600083013567ffffffffffffffff81111561332457600080fd5b61333085828601613140565b92509250509250929050565b60008060006040848603121561335157600080fd5b600084013567ffffffffffffffff81111561336b57600080fd5b61337786828701613140565b9350935050602061338a868287016131b4565b9150509250925092565b6000602082840312156133a657600080fd5b600082013567ffffffffffffffff8111156133c057600080fd5b6133cc8482850161318a565b91505092915050565b6000602082840312156133e757600080fd5b60006133f5848285016131b4565b91505092915050565b60006020828403121561341057600080fd5b600061341e848285016131c9565b91505092915050565b6000806000806080858703121561343d57600080fd5b600061344b878288016131c9565b945050602061345c878288016131c9565b935050604061346d878288016131c9565b925050606061347e878288016131c9565b91505092959194509250565b600061349683836134a2565b60208301905092915050565b6134ab81613f4e565b82525050565b6134ba81613f4e565b82525050565b60006134cb82613df4565b6134d58185613e17565b93506134e083613de4565b8060005b838110156135115781516134f8888261348a565b975061350383613e0a565b9250506001810190506134e4565b5085935050505092915050565b61352781613f60565b82525050565b61353681613fa3565b82525050565b61354581613fc7565b82525050565b600061355682613dff565b6135608185613e28565b9350613570818560208601613fd9565b613579816140e2565b840191505092915050565b6000613591602383613e28565b91507f45524332303a207472616e7366657220746f20746865207a65726f206164647260008301527f65737300000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006135f7603f83613e28565b91507f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008301527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c6564006020830152604082019050919050565b600061365d602a83613e28565b91507f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008301527f65666c656374696f6e73000000000000000000000000000000000000000000006020830152604082019050919050565b60006136c3601c83613e28565b91507f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000006000830152602082019050919050565b6000613703602683613e28565b91507f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008301527f64647265737300000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613769602283613e28565b91507f45524332303a20617070726f766520746f20746865207a65726f20616464726560008301527f73730000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006137cf602383613e28565b91507f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008301527f65642100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613835601b83613e28565b91507f536166654d6174683a206164646974696f6e206f766572666c6f7700000000006000830152602082019050919050565b6000613875602183613e28565b91507f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008301527f77000000000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006138db602083613e28565b91507f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726000830152602082019050919050565b600061391b602983613e28565b91507f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008301527f7468616e207a65726f00000000000000000000000000000000000000000000006020830152604082019050919050565b6000613981602583613e28565b91507f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008301527f64726573730000000000000000000000000000000000000000000000000000006020830152604082019050919050565b60006139e7602383613e28565b91507f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008301527f7a652100000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000613a4d602483613e28565b91507f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008301527f72657373000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b613aaf81613f8c565b82525050565b613abe81613f96565b82525050565b6000602082019050613ad960008301846134b1565b92915050565b6000602082019050613af4600083018461351e565b92915050565b6000602082019050613b0f600083018461352d565b92915050565b60006020820190508181036000830152613b2f818461354b565b905092915050565b60006020820190508181036000830152613b5081613584565b9050919050565b60006020820190508181036000830152613b70816135ea565b9050919050565b60006020820190508181036000830152613b9081613650565b9050919050565b60006020820190508181036000830152613bb0816136b6565b9050919050565b60006020820190508181036000830152613bd0816136f6565b9050919050565b60006020820190508181036000830152613bf08161375c565b9050919050565b60006020820190508181036000830152613c10816137c2565b9050919050565b60006020820190508181036000830152613c3081613828565b9050919050565b60006020820190508181036000830152613c5081613868565b9050919050565b60006020820190508181036000830152613c70816138ce565b9050919050565b60006020820190508181036000830152613c908161390e565b9050919050565b60006020820190508181036000830152613cb081613974565b9050919050565b60006020820190508181036000830152613cd0816139da565b9050919050565b60006020820190508181036000830152613cf081613a40565b9050919050565b6000602082019050613d0c6000830184613aa6565b92915050565b600060a082019050613d276000830188613aa6565b613d34602083018761353c565b8181036040830152613d4681866134c0565b9050613d5560608301856134b1565b613d626080830184613aa6565b9695505050505050565b6000602082019050613d816000830184613ab5565b92915050565b6000604051905081810181811067ffffffffffffffff82111715613dae57613dad6140b3565b5b8060405250919050565b600067ffffffffffffffff821115613dd357613dd26140b3565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613e4482613f8c565b9150613e4f83613f8c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613e8457613e83614055565b5b828201905092915050565b6000613e9a82613f8c565b9150613ea583613f8c565b925082613eb557613eb4614084565b5b828204905092915050565b6000613ecb82613f8c565b9150613ed683613f8c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613f0f57613f0e614055565b5b828202905092915050565b6000613f2582613f8c565b9150613f3083613f8c565b925082821015613f4357613f42614055565b5b828203905092915050565b6000613f5982613f6c565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000613fae82613fb5565b9050919050565b6000613fc082613f6c565b9050919050565b6000613fd282613f8c565b9050919050565b60005b83811015613ff7578082015181840152602081019050613fdc565b83811115614006576000848401525b50505050565b600061401782613f8c565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561404a57614049614055565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b6140fc81613f4e565b811461410757600080fd5b50565b61411381613f60565b811461411e57600080fd5b50565b61412a81613f8c565b811461413557600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122094c388621e5887933c82151216c74359085f64ee237289218a19321b0718946264736f6c63430008000033

Deployed Bytecode Sourcemap

4309:13993:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13070:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6859:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7784:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5711:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7136:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7985:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6007:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7045:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5759:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18103:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13247:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17279:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12827:235;;;;;;;;;;;;;:::i;:::-;;7239:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1796:148;;;;;;;;;;;;;:::i;:::-;;17419:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5901:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5404:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1582:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12474:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5953:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6950:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17088:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16745:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7385:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17900:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5454:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5366:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12583:236;;;;;;;;;;;;;:::i;:::-;;17658:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7592:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17535:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1952:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13070:169;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13146:9:::1;13141:91;13165:5;:12;13161:1;:16;13141:91;;;13216:4;13199;:14;13204:5;13210:1;13204:8;;;;;;;;;;;;;;;;;;;;;;13199:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13179:3;;;;;:::i;:::-;;;;13141:91;;;;13070:169:::0;:::o;6859:83::-;6896:13;6929:5;;;;;;;;;;;;;;;;;6922:12;;6859:83;:::o;7784:193::-;7886:4;7908:39;7917:12;:10;:12::i;:::-;7931:7;7940:6;7908:8;:39::i;:::-;7965:4;7958:11;;7784:193;;;;:::o;5711:41::-;;;;;;;;;;;;;:::o;7136:95::-;7189:7;4869:17;7209:14;;7136:95;:::o;7985:446::-;8117:4;8134:36;8144:6;8152:9;8163:6;8134:9;:36::i;:::-;8181:220;8204:6;8225:12;:10;:12::i;:::-;8252:138;8308:6;8252:138;;;;;;;;;;;;;;;;;:11;:19;8264:6;8252:19;;;;;;;;;;;;;;;:33;8272:12;:10;:12::i;:::-;8252:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8181:8;:220::i;:::-;8419:4;8412:11;;7985:446;;;;;:::o;6007:50::-;;;;:::o;7045:83::-;7086:5;4543:1;7104:16;;7045:83;:::o;5759:28::-;;;;;;;;;;;;;:::o;18103:196::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18190:9:::1;18186:106;18209:8;;:15;;18205:1;:19;18186:106;;;18258:9;:22;18268:8;;18277:1;18268:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18258:22;;;;;;;;;;;;;;;;18251:29;;;;;;;;;;;18226:3;;;;;:::i;:::-;;;;18186:106;;;;18103:196:::0;;:::o;13247:92::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13326:5:::1;13311:4;:12;13316:6;13311:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13247:92:::0;:::o;17279:101::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17360:12:::1;17346:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;17279:101:::0;:::o;12827:235::-;12893:19;;;;;;;;;;;12877:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12932:17;;;;;;;;;;;12916:33;;:12;:10;:12::i;:::-;:33;;;12877:72;12869:81;;;;;;12961:26;12990:21;12961:50;;13022:32;13035:18;13022:12;:32::i;:::-;12827:235;:::o;7239:138::-;7305:7;7332:37;7352:7;:16;7360:7;7352:16;;;;;;;;;;;;;;;;7332:19;:37::i;:::-;7325:44;;7239:138;;;:::o;1796:148::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1903:1:::1;1866:40;;1887:6;::::0;::::1;;;;;;;;1866:40;;;;;;;;;;;;1934:1;1917:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1796:148::o:0;17419:108::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17508:11:::1;17493:12;:26;;;;17419:108:::0;:::o;5901:45::-;;;;:::o;5404:43::-;;;;;;;;;;;;;;;;;:::o;1582:79::-;1620:7;1647:6;;;;;;;;;;;1640:13;;1582:79;:::o;12474:101::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12555:12:::1;12541:11;;:26;;;;;;;;;;;;;;;;;;12474:101:::0;:::o;5953:47::-;;;;:::o;6950:87::-;6989:13;7022:7;;;;;;;;;;;;;;;;;7015:14;;6950:87;:::o;17088:139::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17201:18:::1;17179:19;:40;;;;17088:139:::0;:::o;16745:291::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16896:13:::1;16879:14;:30;;;;16938:14;16920:15;:32;;;;16978:11;16963:12;:26;;;;17016:12;17000:13;:28;;;;16745:291:::0;;;;:::o;7385:199::-;7490:4;7512:42;7522:12;:10;:12::i;:::-;7536:9;7547:6;7512:9;:42::i;:::-;7572:4;7565:11;;7385:199;;;;:::o;17900:195::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17986:9:::1;17982:106;18005:8;;:15;;18001:1;:19;17982:106;;;18072:4;18047:9;:22;18057:8;;18066:1;18057:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18047:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;18022:3;;;;;:::i;:::-;;;;17982:106;;;;17900:195:::0;;:::o;5454:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;5366:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12583:236::-;12649:19;;;;;;;;;;;12633:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12688:17;;;;;;;;;;;12672:33;;:12;:10;:12::i;:::-;:33;;;12633:72;12625:81;;;;;;12717:23;12743:24;12761:4;12743:9;:24::i;:::-;12717:50;;12778:33;12795:15;12778:16;:33::i;:::-;12583:236;:::o;17658:234::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17775:9:::1;17771:114;17794:8;;:15;;17790:1;:19;17771:114;;;17865:8;17831:18;:31;17850:8;;17859:1;17850:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17831:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17811:3;;;;;:::i;:::-;;;;17771:114;;;;17658:234:::0;;;:::o;7592:184::-;7709:7;7741:11;:18;7753:5;7741:18;;;;;;;;;;;;;;;:27;7760:7;7741:27;;;;;;;;;;;;;;;;7734:34;;7592:184;;;;:::o;17535:115::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17629:13:::1;17612:14;:30;;;;17535:115:::0;:::o;1952:244::-;1719:12;:10;:12::i;:::-;1709:22;;:6;;;;;;;;;;:22;;;1701:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2061:1:::1;2041:22;;:8;:22;;;;2033:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2151:8;2122:38;;2143:6;::::0;::::1;;;;;;;;2122:38;;;;;;;;;;;;2180:8;2171:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1952:244:::0;:::o;341:98::-;394:7;421:10;414:17;;341:98;:::o;9122:369::-;9266:1;9249:19;;:5;:19;;;;9241:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9347:1;9328:21;;:7;:21;;;;9320:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9429:6;9399:11;:18;9411:5;9399:18;;;;;;;;;;;;;;;:27;9418:7;9399:27;;;;;;;;;;;;;;;:36;;;;9467:7;9451:32;;9460:5;9451:32;;;9476:6;9451:32;;;;;;:::i;:::-;;;;;;;;9122:369;;;:::o;9499:2369::-;9637:1;9621:18;;:4;:18;;;;9613:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9714:1;9700:16;;:2;:16;;;;9692:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9784:1;9775:6;:10;9767:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9857:7;:5;:7::i;:::-;9849:15;;:4;:15;;;;:32;;;;;9874:7;:5;:7::i;:::-;9868:13;;:2;:13;;;;9849:32;:52;;;;;9886:9;:15;9896:4;9886:15;;;;;;;;;;;;;;;;;;;;;;;;;9885:16;9849:52;:70;;;;;9906:9;:13;9916:2;9906:13;;;;;;;;;;;;;;;;;;;;;;;;;9905:14;9849:70;9845:1297;;;9976:11;;;;;;;;;;;9971:144;;10016:9;:15;10026:4;10016:15;;;;;;;;;;;;;;;;;;;;;;;;;10008:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9971:144;10149:12;;10139:6;:22;;10131:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10218:4;:10;10223:4;10218:10;;;;;;;;;;;;;;;;;;;;;;;;;10217:11;:24;;;;;10233:4;:8;10238:2;10233:8;;;;;;;;;;;;;;;;;;;;;;;;;10232:9;10217:24;10209:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10307:13;;;;;;;;;;;10301:19;;:2;:19;;;10298:146;;10374:14;;10365:6;10349:13;10359:2;10349:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10341:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10298:146;10460:28;10491:24;10509:4;10491:9;:24::i;:::-;10460:55;;10530:12;10569:19;;10545:20;:43;;10530:58;;10632:12;;10608:20;:36;10605:124;;10701:12;;10678:35;;10605:124;10749:7;:18;;;;;10761:6;;;;;;;;;;;10760:7;10749:18;:43;;;;;10779:13;;;;;;;;;;;10771:21;;:4;:21;;;;10749:43;:58;;;;;10796:11;;;;;;;;;;10749:58;:87;;;;;10812:18;:24;10831:4;10812:24;;;;;;;;;;;;;;;;;;;;;;;;;10811:25;10749:87;:114;;;;;10841:18;:22;10860:2;10841:22;;;;;;;;;;;;;;;;;;;;;;;;;10840:23;10749:114;10745:386;;;10884:38;10901:20;10884:16;:38::i;:::-;10941:26;10970:21;10941:50;;11035:1;11014:18;:22;11010:106;;;11061:35;11074:21;11061:12;:35::i;:::-;11010:106;10745:386;;9845:1297;;;11154:12;11169:4;11154:19;;11218:18;:24;11237:4;11218:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11246:18;:22;11265:2;11246:22;;;;;;;;;;;;;;;;;;;;;;;;;11218:50;11217:102;;;;11282:13;;;;;;;;;;;11274:21;;:4;:21;;;;:44;;;;;11305:13;;;;;;;;;;;11299:19;;:2;:19;;;;11274:44;11217:102;11213:594;;;11346:5;11336:15;;11213:594;;;11429:13;;;;;;;;;;;11421:21;;:4;:21;;;:55;;;;;11460:15;;;;;;;;;;;11446:30;;:2;:30;;;;11421:55;11418:162;;;11509:14;;11497:9;:26;;;;11552:12;;11542:7;:22;;;;11418:162;11639:13;;;;;;;;;;;11633:19;;:2;:19;;;:55;;;;;11672:15;;;;;;;;;;;11656:32;;:4;:32;;;;11633:55;11629:165;;;11721:15;;11709:9;:27;;;;11765:13;;11755:7;:23;;;;11629:165;11213:594;11819:41;11834:4;11840:2;11844:6;11852:7;11819:14;:41::i;:::-;9499:2369;;;;:::o;2560:224::-;2680:7;2713:1;2708;:6;;2716:12;2700:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2740:9;2756:1;2752;:5;;;;:::i;:::-;2740:17;;2775:1;2768:8;;;2560:224;;;;;:::o;12367:99::-;12424:17;;;;;;;;;;;:26;;:34;12451:6;12424:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12367:99;:::o;8439:323::-;8534:7;8592;;8581;:18;;8559:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8680:19;8702:10;:8;:10::i;:::-;8680:32;;8730:24;8742:11;8730:7;:11;;:24;;;;:::i;:::-;8723:31;;;8439:323;;;:::o;11876:483::-;6160:4;6151:6;;:13;;;;;;;;;;;;;;;;;;11954:21:::1;11992:1;11978:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11954:40;;12023:4;12005;12010:1;12005:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;12049:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12039:4;12044:1;12039:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;12082:62;12099:4;12114:15;;;;;;;;;;;12132:11;12082:8;:62::i;:::-;12155:15;;;;;;;;;;;:66;;;12236:11;12262:1;12278:4;12305;12325:15;12155:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6175:1;6196:5:::0;6187:6;;:14;;;;;;;;;;;;;;;;;;11876:483;:::o;13347:282::-;13503:7;13498:28;;13512:14;:12;:14::i;:::-;13498:28;13537:44;13555:6;13563:9;13574:6;13537:17;:44::i;:::-;13597:7;13592:29;;13606:15;:13;:15::i;:::-;13592:29;13347:282;;;;:::o;16308:164::-;16350:7;16371:15;16388;16407:19;:17;:19::i;:::-;16370:56;;;;16444:20;16456:7;16444;:11;;:20;;;;:::i;:::-;16437:27;;;;16308:164;:::o;3046:132::-;3104:7;3131:39;3135:1;3138;3131:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3124:46;;3046:132;;;;:::o;8770:219::-;8830:1;8817:9;;:14;:30;;;;;8846:1;8835:7;;:12;8817:30;8813:43;;;8849:7;;8813:43;8888:9;;8868:17;:29;;;;8926:7;;8908:15;:25;;;;8958:1;8946:9;:13;;;;8980:1;8970:7;:11;;;;8770:219;:::o;13637:610::-;13784:15;13814:23;13852:12;13879:23;13917:12;13944:13;13971:19;13982:7;13971:10;:19::i;:::-;13769:221;;;;;;;;;;;;14019:28;14039:7;14019;:15;14027:6;14019:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14001:7;:15;14009:6;14001:15;;;;;;;;;;;;;;;:46;;;;14079:39;14102:15;14079:7;:18;14087:9;14079:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14058:7;:18;14066:9;14058:18;;;;;;;;;;;;;;;:60;;;;14129:16;14139:5;14129:9;:16::i;:::-;14156:23;14168:4;14174;14156:11;:23::i;:::-;14212:9;14195:44;;14204:6;14195:44;;;14223:15;14195:44;;;;;;:::i;:::-;;;;;;;;13637:610;;;;;;;;;:::o;8997:117::-;9053:17;;9041:9;:29;;;;9091:15;;9081:7;:25;;;;8997:117::o;16480:257::-;16531:7;16540;16560:15;16578:7;;16560:25;;16596:15;4869:17;16596:25;;16646:20;4869:17;16646:7;;:11;;:20;;;;:::i;:::-;16636:7;:30;16632:61;;;16676:7;;4869:17;16668:25;;;;;;;;16632:61;16712:7;16721;16704:25;;;;;;16480:257;;;:::o;3186:223::-;3306:7;3338:1;3334;:5;3341:12;3326:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3365:9;3381:1;3377;:5;;;;:::i;:::-;3365:17;;3400:1;3393:8;;;3186:223;;;;;:::o;14666:615::-;14766:7;14788;14810;14832;14854;14876;14912:23;14937:12;14951:13;14981:40;14993:7;15002:9;;15013:7;;14981:11;:40::i;:::-;14911:110;;;;;;15032:19;15054:10;:8;:10::i;:::-;15032:32;;15076:15;15093:23;15118:12;15147:46;15159:7;15168:4;15174:5;15181:11;15147;:46::i;:::-;15075:118;;;;;;15212:7;15221:15;15238:4;15244:15;15261:4;15267:5;15204:69;;;;;;;;;;;;;;;;;;;14666:615;;;;;;;:::o;2416:136::-;2474:7;2501:43;2505:1;2508;2501:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2494:50;;2416:136;;;;:::o;2229:179::-;2287:7;2307:9;2323:1;2319;:5;;;;:::i;:::-;2307:17;;2348:1;2343;:6;;2335:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2399:1;2392:8;;;2229:179;;;;:::o;14255:211::-;14308:19;14330:10;:8;:10::i;:::-;14308:32;;14351:13;14367:22;14377:11;14367:5;:9;;:22;;;;:::i;:::-;14351:38;;14425:33;14452:5;14425:7;:22;14441:4;14425:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14400:7;:22;14416:4;14400:22;;;;;;;;;;;;;;;:58;;;;14255:211;;;:::o;14474:147::-;14552:17;14564:4;14552:7;;:11;;:17;;;;:::i;:::-;14542:7;:27;;;;14593:20;14608:4;14593:10;;:14;;:20;;;;:::i;:::-;14580:10;:33;;;;14474:147;;:::o;15289:469::-;15458:7;15480;15502;15537:12;15552:30;15578:3;15552:21;15564:8;15552:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15537:45;;15593:13;15609:28;15633:3;15609:19;15621:6;15609:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15593:44;;15648:23;15674:28;15696:5;15674:17;15686:4;15674:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15648:54;;15721:15;15738:4;15744:5;15713:37;;;;;;;;;15289:469;;;;;;;:::o;15766:534::-;15960:7;15982;16004;16039:15;16057:24;16069:11;16057:7;:11;;:24;;;;:::i;:::-;16039:42;;16092:12;16107:21;16116:11;16107:4;:8;;:21;;;;:::i;:::-;16092:36;;16139:13;16155:22;16165:11;16155:5;:9;;:22;;;;:::i;:::-;16139:38;;16188:23;16214:28;16236:5;16214:17;16226:4;16214:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16188:54;;16261:7;16270:15;16287:4;16253:39;;;;;;;;;;15766:534;;;;;;;;:::o;2792:246::-;2850:7;2879:1;2874;:6;2870:47;;;2904:1;2897:8;;;;2870:47;2927:9;2943:1;2939;:5;;;;:::i;:::-;2927:17;;2972:1;2967;2963;:5;;;;:::i;:::-;:10;2955:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3029:1;3022:8;;;2792:246;;;;;:::o;24:622:1:-;;145:80;160:64;217:6;160:64;:::i;:::-;145:80;:::i;:::-;136:89;;245:5;273:6;266:5;259:21;299:4;292:5;288:16;281:23;;324:6;374:3;366:4;358:6;354:17;349:3;345:27;342:36;339:2;;;391:1;388;381:12;339:2;419:1;404:236;429:6;426:1;423:13;404:236;;;496:3;524:37;557:3;545:10;524:37;:::i;:::-;519:3;512:50;591:4;586:3;582:14;575:21;;625:4;620:3;616:14;609:21;;464:176;451:1;448;444:9;439:14;;404:236;;;408:14;126:520;;;;;;;:::o;652:139::-;;736:6;723:20;714:29;;752:33;779:5;752:33;:::i;:::-;704:87;;;;:::o;797:143::-;;885:6;879:13;870:22;;901:33;928:5;901:33;:::i;:::-;860:80;;;;:::o;963:367::-;;;1096:3;1089:4;1081:6;1077:17;1073:27;1063:2;;1114:1;1111;1104:12;1063:2;1150:6;1137:20;1127:30;;1180:18;1172:6;1169:30;1166:2;;;1212:1;1209;1202:12;1166:2;1249:4;1241:6;1237:17;1225:29;;1303:3;1295:4;1287:6;1283:17;1273:8;1269:32;1266:41;1263:2;;;1320:1;1317;1310:12;1263:2;1053:277;;;;;:::o;1353:303::-;;1473:3;1466:4;1458:6;1454:17;1450:27;1440:2;;1491:1;1488;1481:12;1440:2;1531:6;1518:20;1556:94;1646:3;1638:6;1631:4;1623:6;1619:17;1556:94;:::i;:::-;1547:103;;1430:226;;;;;:::o;1662:133::-;;1743:6;1730:20;1721:29;;1759:30;1783:5;1759:30;:::i;:::-;1711:84;;;;:::o;1801:139::-;;1885:6;1872:20;1863:29;;1901:33;1928:5;1901:33;:::i;:::-;1853:87;;;;:::o;1946:262::-;;2054:2;2042:9;2033:7;2029:23;2025:32;2022:2;;;2070:1;2067;2060:12;2022:2;2113:1;2138:53;2183:7;2174:6;2163:9;2159:22;2138:53;:::i;:::-;2128:63;;2084:117;2012:196;;;;:::o;2214:284::-;;2333:2;2321:9;2312:7;2308:23;2304:32;2301:2;;;2349:1;2346;2339:12;2301:2;2392:1;2417:64;2473:7;2464:6;2453:9;2449:22;2417:64;:::i;:::-;2407:74;;2363:128;2291:207;;;;:::o;2504:407::-;;;2629:2;2617:9;2608:7;2604:23;2600:32;2597:2;;;2645:1;2642;2635:12;2597:2;2688:1;2713:53;2758:7;2749:6;2738:9;2734:22;2713:53;:::i;:::-;2703:63;;2659:117;2815:2;2841:53;2886:7;2877:6;2866:9;2862:22;2841:53;:::i;:::-;2831:63;;2786:118;2587:324;;;;;:::o;2917:552::-;;;;3059:2;3047:9;3038:7;3034:23;3030:32;3027:2;;;3075:1;3072;3065:12;3027:2;3118:1;3143:53;3188:7;3179:6;3168:9;3164:22;3143:53;:::i;:::-;3133:63;;3089:117;3245:2;3271:53;3316:7;3307:6;3296:9;3292:22;3271:53;:::i;:::-;3261:63;;3216:118;3373:2;3399:53;3444:7;3435:6;3424:9;3420:22;3399:53;:::i;:::-;3389:63;;3344:118;3017:452;;;;;:::o;3475:407::-;;;3600:2;3588:9;3579:7;3575:23;3571:32;3568:2;;;3616:1;3613;3606:12;3568:2;3659:1;3684:53;3729:7;3720:6;3709:9;3705:22;3684:53;:::i;:::-;3674:63;;3630:117;3786:2;3812:53;3857:7;3848:6;3837:9;3833:22;3812:53;:::i;:::-;3802:63;;3757:118;3558:324;;;;;:::o;3888:425::-;;;4031:2;4019:9;4010:7;4006:23;4002:32;3999:2;;;4047:1;4044;4037:12;3999:2;4118:1;4107:9;4103:17;4090:31;4148:18;4140:6;4137:30;4134:2;;;4180:1;4177;4170:12;4134:2;4216:80;4288:7;4279:6;4268:9;4264:22;4216:80;:::i;:::-;4198:98;;;;4061:245;3989:324;;;;;:::o;4319:564::-;;;;4476:2;4464:9;4455:7;4451:23;4447:32;4444:2;;;4492:1;4489;4482:12;4444:2;4563:1;4552:9;4548:17;4535:31;4593:18;4585:6;4582:30;4579:2;;;4625:1;4622;4615:12;4579:2;4661:80;4733:7;4724:6;4713:9;4709:22;4661:80;:::i;:::-;4643:98;;;;4506:245;4790:2;4816:50;4858:7;4849:6;4838:9;4834:22;4816:50;:::i;:::-;4806:60;;4761:115;4434:449;;;;;:::o;4889:405::-;;5022:2;5010:9;5001:7;4997:23;4993:32;4990:2;;;5038:1;5035;5028:12;4990:2;5109:1;5098:9;5094:17;5081:31;5139:18;5131:6;5128:30;5125:2;;;5171:1;5168;5161:12;5125:2;5199:78;5269:7;5260:6;5249:9;5245:22;5199:78;:::i;:::-;5189:88;;5052:235;4980:314;;;;:::o;5300:256::-;;5405:2;5393:9;5384:7;5380:23;5376:32;5373:2;;;5421:1;5418;5411:12;5373:2;5464:1;5489:50;5531:7;5522:6;5511:9;5507:22;5489:50;:::i;:::-;5479:60;;5435:114;5363:193;;;;:::o;5562:262::-;;5670:2;5658:9;5649:7;5645:23;5641:32;5638:2;;;5686:1;5683;5676:12;5638:2;5729:1;5754:53;5799:7;5790:6;5779:9;5775:22;5754:53;:::i;:::-;5744:63;;5700:117;5628:196;;;;:::o;5830:698::-;;;;;5989:3;5977:9;5968:7;5964:23;5960:33;5957:2;;;6006:1;6003;5996:12;5957:2;6049:1;6074:53;6119:7;6110:6;6099:9;6095:22;6074:53;:::i;:::-;6064:63;;6020:117;6176:2;6202:53;6247:7;6238:6;6227:9;6223:22;6202:53;:::i;:::-;6192:63;;6147:118;6304:2;6330:53;6375:7;6366:6;6355:9;6351:22;6330:53;:::i;:::-;6320:63;;6275:118;6432:2;6458:53;6503:7;6494:6;6483:9;6479:22;6458:53;:::i;:::-;6448:63;;6403:118;5947:581;;;;;;;:::o;6534:179::-;;6624:46;6666:3;6658:6;6624:46;:::i;:::-;6702:4;6697:3;6693:14;6679:28;;6614:99;;;;:::o;6719:108::-;6796:24;6814:5;6796:24;:::i;:::-;6791:3;6784:37;6774:53;;:::o;6833:118::-;6920:24;6938:5;6920:24;:::i;:::-;6915:3;6908:37;6898:53;;:::o;6987:732::-;;7135:54;7183:5;7135:54;:::i;:::-;7205:86;7284:6;7279:3;7205:86;:::i;:::-;7198:93;;7315:56;7365:5;7315:56;:::i;:::-;7394:7;7425:1;7410:284;7435:6;7432:1;7429:13;7410:284;;;7511:6;7505:13;7538:63;7597:3;7582:13;7538:63;:::i;:::-;7531:70;;7624:60;7677:6;7624:60;:::i;:::-;7614:70;;7470:224;7457:1;7454;7450:9;7445:14;;7410:284;;;7414:14;7710:3;7703:10;;7111:608;;;;;;;:::o;7725:109::-;7806:21;7821:5;7806:21;:::i;:::-;7801:3;7794:34;7784:50;;:::o;7840:183::-;7953:63;8010:5;7953:63;:::i;:::-;7948:3;7941:76;7931:92;;:::o;8029:147::-;8124:45;8163:5;8124:45;:::i;:::-;8119:3;8112:58;8102:74;;:::o;8182:364::-;;8298:39;8331:5;8298:39;:::i;:::-;8353:71;8417:6;8412:3;8353:71;:::i;:::-;8346:78;;8433:52;8478:6;8473:3;8466:4;8459:5;8455:16;8433:52;:::i;:::-;8510:29;8532:6;8510:29;:::i;:::-;8505:3;8501:39;8494:46;;8274:272;;;;;:::o;8552:367::-;;8715:67;8779:2;8774:3;8715:67;:::i;:::-;8708:74;;8812:34;8808:1;8803:3;8799:11;8792:55;8878:5;8873:2;8868:3;8864:12;8857:27;8910:2;8905:3;8901:12;8894:19;;8698:221;;;:::o;8925:395::-;;9088:67;9152:2;9147:3;9088:67;:::i;:::-;9081:74;;9185:34;9181:1;9176:3;9172:11;9165:55;9251:33;9246:2;9241:3;9237:12;9230:55;9311:2;9306:3;9302:12;9295:19;;9071:249;;;:::o;9326:374::-;;9489:67;9553:2;9548:3;9489:67;:::i;:::-;9482:74;;9586:34;9582:1;9577:3;9573:11;9566:55;9652:12;9647:2;9642:3;9638:12;9631:34;9691:2;9686:3;9682:12;9675:19;;9472:228;;;:::o;9706:326::-;;9869:67;9933:2;9928:3;9869:67;:::i;:::-;9862:74;;9966:30;9962:1;9957:3;9953:11;9946:51;10023:2;10018:3;10014:12;10007:19;;9852:180;;;:::o;10038:370::-;;10201:67;10265:2;10260:3;10201:67;:::i;:::-;10194:74;;10298:34;10294:1;10289:3;10285:11;10278:55;10364:8;10359:2;10354:3;10350:12;10343:30;10399:2;10394:3;10390:12;10383:19;;10184:224;;;:::o;10414:366::-;;10577:67;10641:2;10636:3;10577:67;:::i;:::-;10570:74;;10674:34;10670:1;10665:3;10661:11;10654:55;10740:4;10735:2;10730:3;10726:12;10719:26;10771:2;10766:3;10762:12;10755:19;;10560:220;;;:::o;10786:367::-;;10949:67;11013:2;11008:3;10949:67;:::i;:::-;10942:74;;11046:34;11042:1;11037:3;11033:11;11026:55;11112:5;11107:2;11102:3;11098:12;11091:27;11144:2;11139:3;11135:12;11128:19;;10932:221;;;:::o;11159:325::-;;11322:67;11386:2;11381:3;11322:67;:::i;:::-;11315:74;;11419:29;11415:1;11410:3;11406:11;11399:50;11475:2;11470:3;11466:12;11459:19;;11305:179;;;:::o;11490:365::-;;11653:67;11717:2;11712:3;11653:67;:::i;:::-;11646:74;;11750:34;11746:1;11741:3;11737:11;11730:55;11816:3;11811:2;11806:3;11802:12;11795:25;11846:2;11841:3;11837:12;11830:19;;11636:219;;;:::o;11861:330::-;;12024:67;12088:2;12083:3;12024:67;:::i;:::-;12017:74;;12121:34;12117:1;12112:3;12108:11;12101:55;12182:2;12177:3;12173:12;12166:19;;12007:184;;;:::o;12197:373::-;;12360:67;12424:2;12419:3;12360:67;:::i;:::-;12353:74;;12457:34;12453:1;12448:3;12444:11;12437:55;12523:11;12518:2;12513:3;12509:12;12502:33;12561:2;12556:3;12552:12;12545:19;;12343:227;;;:::o;12576:369::-;;12739:67;12803:2;12798:3;12739:67;:::i;:::-;12732:74;;12836:34;12832:1;12827:3;12823:11;12816:55;12902:7;12897:2;12892:3;12888:12;12881:29;12936:2;12931:3;12927:12;12920:19;;12722:223;;;:::o;12951:367::-;;13114:67;13178:2;13173:3;13114:67;:::i;:::-;13107:74;;13211:34;13207:1;13202:3;13198:11;13191:55;13277:5;13272:2;13267:3;13263:12;13256:27;13309:2;13304:3;13300:12;13293:19;;13097:221;;;:::o;13324:368::-;;13487:67;13551:2;13546:3;13487:67;:::i;:::-;13480:74;;13584:34;13580:1;13575:3;13571:11;13564:55;13650:6;13645:2;13640:3;13636:12;13629:28;13683:2;13678:3;13674:12;13667:19;;13470:222;;;:::o;13698:118::-;13785:24;13803:5;13785:24;:::i;:::-;13780:3;13773:37;13763:53;;:::o;13822:112::-;13905:22;13921:5;13905:22;:::i;:::-;13900:3;13893:35;13883:51;;:::o;13940:222::-;;14071:2;14060:9;14056:18;14048:26;;14084:71;14152:1;14141:9;14137:17;14128:6;14084:71;:::i;:::-;14038:124;;;;:::o;14168:210::-;;14293:2;14282:9;14278:18;14270:26;;14306:65;14368:1;14357:9;14353:17;14344:6;14306:65;:::i;:::-;14260:118;;;;:::o;14384:274::-;;14541:2;14530:9;14526:18;14518:26;;14554:97;14648:1;14637:9;14633:17;14624:6;14554:97;:::i;:::-;14508:150;;;;:::o;14664:313::-;;14815:2;14804:9;14800:18;14792:26;;14864:9;14858:4;14854:20;14850:1;14839:9;14835:17;14828:47;14892:78;14965:4;14956:6;14892:78;:::i;:::-;14884:86;;14782:195;;;;:::o;14983:419::-;;15187:2;15176:9;15172:18;15164:26;;15236:9;15230:4;15226:20;15222:1;15211:9;15207:17;15200:47;15264:131;15390:4;15264:131;:::i;:::-;15256:139;;15154:248;;;:::o;15408:419::-;;15612:2;15601:9;15597:18;15589:26;;15661:9;15655:4;15651:20;15647:1;15636:9;15632:17;15625:47;15689:131;15815:4;15689:131;:::i;:::-;15681:139;;15579:248;;;:::o;15833:419::-;;16037:2;16026:9;16022:18;16014:26;;16086:9;16080:4;16076:20;16072:1;16061:9;16057:17;16050:47;16114:131;16240:4;16114:131;:::i;:::-;16106:139;;16004:248;;;:::o;16258:419::-;;16462:2;16451:9;16447:18;16439:26;;16511:9;16505:4;16501:20;16497:1;16486:9;16482:17;16475:47;16539:131;16665:4;16539:131;:::i;:::-;16531:139;;16429:248;;;:::o;16683:419::-;;16887:2;16876:9;16872:18;16864:26;;16936:9;16930:4;16926:20;16922:1;16911:9;16907:17;16900:47;16964:131;17090:4;16964:131;:::i;:::-;16956:139;;16854:248;;;:::o;17108:419::-;;17312:2;17301:9;17297:18;17289:26;;17361:9;17355:4;17351:20;17347:1;17336:9;17332:17;17325:47;17389:131;17515:4;17389:131;:::i;:::-;17381:139;;17279:248;;;:::o;17533:419::-;;17737:2;17726:9;17722:18;17714:26;;17786:9;17780:4;17776:20;17772:1;17761:9;17757:17;17750:47;17814:131;17940:4;17814:131;:::i;:::-;17806:139;;17704:248;;;:::o;17958:419::-;;18162:2;18151:9;18147:18;18139:26;;18211:9;18205:4;18201:20;18197:1;18186:9;18182:17;18175:47;18239:131;18365:4;18239:131;:::i;:::-;18231:139;;18129:248;;;:::o;18383:419::-;;18587:2;18576:9;18572:18;18564:26;;18636:9;18630:4;18626:20;18622:1;18611:9;18607:17;18600:47;18664:131;18790:4;18664:131;:::i;:::-;18656:139;;18554:248;;;:::o;18808:419::-;;19012:2;19001:9;18997:18;18989:26;;19061:9;19055:4;19051:20;19047:1;19036:9;19032:17;19025:47;19089:131;19215:4;19089:131;:::i;:::-;19081:139;;18979:248;;;:::o;19233:419::-;;19437:2;19426:9;19422:18;19414:26;;19486:9;19480:4;19476:20;19472:1;19461:9;19457:17;19450:47;19514:131;19640:4;19514:131;:::i;:::-;19506:139;;19404:248;;;:::o;19658:419::-;;19862:2;19851:9;19847:18;19839:26;;19911:9;19905:4;19901:20;19897:1;19886:9;19882:17;19875:47;19939:131;20065:4;19939:131;:::i;:::-;19931:139;;19829:248;;;:::o;20083:419::-;;20287:2;20276:9;20272:18;20264:26;;20336:9;20330:4;20326:20;20322:1;20311:9;20307:17;20300:47;20364:131;20490:4;20364:131;:::i;:::-;20356:139;;20254:248;;;:::o;20508:419::-;;20712:2;20701:9;20697:18;20689:26;;20761:9;20755:4;20751:20;20747:1;20736:9;20732:17;20725:47;20789:131;20915:4;20789:131;:::i;:::-;20781:139;;20679:248;;;:::o;20933:222::-;;21064:2;21053:9;21049:18;21041:26;;21077:71;21145:1;21134:9;21130:17;21121:6;21077:71;:::i;:::-;21031:124;;;;:::o;21161:831::-;;21462:3;21451:9;21447:19;21439:27;;21476:71;21544:1;21533:9;21529:17;21520:6;21476:71;:::i;:::-;21557:80;21633:2;21622:9;21618:18;21609:6;21557:80;:::i;:::-;21684:9;21678:4;21674:20;21669:2;21658:9;21654:18;21647:48;21712:108;21815:4;21806:6;21712:108;:::i;:::-;21704:116;;21830:72;21898:2;21887:9;21883:18;21874:6;21830:72;:::i;:::-;21912:73;21980:3;21969:9;21965:19;21956:6;21912:73;:::i;:::-;21429:563;;;;;;;;:::o;21998:214::-;;22125:2;22114:9;22110:18;22102:26;;22138:67;22202:1;22191:9;22187:17;22178:6;22138:67;:::i;:::-;22092:120;;;;:::o;22218:283::-;;22284:2;22278:9;22268:19;;22326:4;22318:6;22314:17;22433:6;22421:10;22418:22;22397:18;22385:10;22382:34;22379:62;22376:2;;;22444:18;;:::i;:::-;22376:2;22484:10;22480:2;22473:22;22258:243;;;;:::o;22507:311::-;;22674:18;22666:6;22663:30;22660:2;;;22696:18;;:::i;:::-;22660:2;22746:4;22738:6;22734:17;22726:25;;22806:4;22800;22796:15;22788:23;;22589:229;;;:::o;22824:132::-;;22914:3;22906:11;;22944:4;22939:3;22935:14;22927:22;;22896:60;;;:::o;22962:114::-;;23063:5;23057:12;23047:22;;23036:40;;;:::o;23082:99::-;;23168:5;23162:12;23152:22;;23141:40;;;:::o;23187:113::-;;23289:4;23284:3;23280:14;23272:22;;23262:38;;;:::o;23306:184::-;;23439:6;23434:3;23427:19;23479:4;23474:3;23470:14;23455:29;;23417:73;;;;:::o;23496:169::-;;23614:6;23609:3;23602:19;23654:4;23649:3;23645:14;23630:29;;23592:73;;;;:::o;23671:305::-;;23730:20;23748:1;23730:20;:::i;:::-;23725:25;;23764:20;23782:1;23764:20;:::i;:::-;23759:25;;23918:1;23850:66;23846:74;23843:1;23840:81;23837:2;;;23924:18;;:::i;:::-;23837:2;23968:1;23965;23961:9;23954:16;;23715:261;;;;:::o;23982:185::-;;24039:20;24057:1;24039:20;:::i;:::-;24034:25;;24073:20;24091:1;24073:20;:::i;:::-;24068:25;;24112:1;24102:2;;24117:18;;:::i;:::-;24102:2;24159:1;24156;24152:9;24147:14;;24024:143;;;;:::o;24173:348::-;;24236:20;24254:1;24236:20;:::i;:::-;24231:25;;24270:20;24288:1;24270:20;:::i;:::-;24265:25;;24458:1;24390:66;24386:74;24383:1;24380:81;24375:1;24368:9;24361:17;24357:105;24354:2;;;24465:18;;:::i;:::-;24354:2;24513:1;24510;24506:9;24495:20;;24221:300;;;;:::o;24527:191::-;;24587:20;24605:1;24587:20;:::i;:::-;24582:25;;24621:20;24639:1;24621:20;:::i;:::-;24616:25;;24660:1;24657;24654:8;24651:2;;;24665:18;;:::i;:::-;24651:2;24710:1;24707;24703:9;24695:17;;24572:146;;;;:::o;24724:96::-;;24790:24;24808:5;24790:24;:::i;:::-;24779:35;;24769:51;;;:::o;24826:90::-;;24903:5;24896:13;24889:21;24878:32;;24868:48;;;:::o;24922:126::-;;24999:42;24992:5;24988:54;24977:65;;24967:81;;;:::o;25054:77::-;;25120:5;25109:16;;25099:32;;;:::o;25137:86::-;;25212:4;25205:5;25201:16;25190:27;;25180:43;;;:::o;25229:178::-;;25338:63;25395:5;25338:63;:::i;:::-;25325:76;;25315:92;;;:::o;25413:139::-;;25522:24;25540:5;25522:24;:::i;:::-;25509:37;;25499:53;;;:::o;25558:121::-;;25649:24;25667:5;25649:24;:::i;:::-;25636:37;;25626:53;;;:::o;25685:307::-;25753:1;25763:113;25777:6;25774:1;25771:13;25763:113;;;25862:1;25857:3;25853:11;25847:18;25843:1;25838:3;25834:11;25827:39;25799:2;25796:1;25792:10;25787:15;;25763:113;;;25894:6;25891:1;25888:13;25885:2;;;25974:1;25965:6;25960:3;25956:16;25949:27;25885:2;25734:258;;;;:::o;25998:233::-;;26060:24;26078:5;26060:24;:::i;:::-;26051:33;;26106:66;26099:5;26096:77;26093:2;;;26176:18;;:::i;:::-;26093:2;26223:1;26216:5;26212:13;26205:20;;26041:190;;;:::o;26237:180::-;26285:77;26282:1;26275:88;26382:4;26379:1;26372:15;26406:4;26403:1;26396:15;26423:180;26471:77;26468:1;26461:88;26568:4;26565:1;26558:15;26592:4;26589:1;26582:15;26609:180;26657:77;26654:1;26647:88;26754:4;26751:1;26744:15;26778:4;26775:1;26768:15;26795:102;;26887:2;26883:7;26878:2;26871:5;26867:14;26863:28;26853:38;;26843:54;;;:::o;26903:122::-;26976:24;26994:5;26976:24;:::i;:::-;26969:5;26966:35;26956:2;;27015:1;27012;27005:12;26956:2;26946:79;:::o;27031:116::-;27101:21;27116:5;27101:21;:::i;:::-;27094:5;27091:32;27081:2;;27137:1;27134;27127:12;27081:2;27071:76;:::o;27153:122::-;27226:24;27244:5;27226:24;:::i;:::-;27219:5;27216:35;27206:2;;27265:1;27262;27255:12;27206:2;27196:79;:::o

Swarm Source

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