ETH Price: $3,156.02 (-0.03%)
Gas: 5 Gwei

Token

Elonium (Elonium)
 

Overview

Max Total Supply

100,000,000,000 Elonium

Holders

229

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
Elonium

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-15
*/

// SPDX-License-Identifier: No

pragma solidity = 0.8.19;

//--- Context ---//
abstract contract Context {
    constructor() {
    }

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

//--- Ownable ---//
abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

interface IFactoryV2 {
    event PairCreated(address indexed token0, address indexed token1, address lpPair, uint);
    function getPair(address tokenA, address tokenB) external view returns (address lpPair);
    function createPair(address tokenA, address tokenB) external returns (address lpPair);
}

interface IV2Pair {
    function factory() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function sync() external;
}

interface IRouter01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function swapExactETHForTokens(
        uint amountOutMin, 
        address[] calldata path, 
        address to, uint deadline
    ) external payable returns (uint[] memory amounts);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IRouter02 is IRouter01 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
}



//--- Interface for ERC20 ---//
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    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 v2 ---//
contract Elonium is Context, Ownable, IERC20 {

    function totalSupply() external pure override returns (uint256) { if (_totalSupply == 0) { revert(); } return _totalSupply; }
    function decimals() external pure override returns (uint8) { if (_totalSupply == 0) { revert(); } return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner(); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function balanceOf(address account) public view override returns (uint256) {
        return balance[account];
    }


    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFee;
    mapping (address => bool) private liquidityAdd;
    mapping (address => bool) private isLpPair;
    mapping (address => bool) private isPresaleAddress;
    mapping (address => uint256) private balance;


    uint256 constant public _totalSupply = 100_000_000_000 * 10**9;
    uint256 constant public swapThreshold = _totalSupply / 5_000;
    uint256 constant public buyfee = 0;
    uint256 constant public sellfee = 40;
    uint256 constant public transferfee = 0;
    uint256 constant public fee_denominator = 1_000;
    bool private canSwapFees = false;
    address payable private marketingAddress = payable(0xC8d46dacd44890B41516dB003d4dA965fCA7A632);


    IRouter02 public swapRouter;
    string constant private _name = "Elonium";
    string constant private _symbol = "Elonium";
    uint8 constant private _decimals = 9;
    address constant public DEAD = 0x000000000000000000000000000000000000dEaD;
    address public lpPair;
    bool public isTradingEnabled = false;
    bool private inSwap;

        modifier inSwapFlag {
        inSwap = true;
        _;
        inSwap = false;
    }


    event _enableTrading();
    event _setPresaleAddress(address account, bool enabled);
    event _toggleCanSwapFees(bool enabled);
    event _changePair(address newLpPair);
    event _changeWallets(address marketing);


    constructor () {
        _noFee[msg.sender] = true;

        if (block.chainid == 56) {
            swapRouter = IRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        } else if (block.chainid == 97) {
            swapRouter = IRouter02(0xD99D1c33F9fC3444f8101754aBC46c52416550D1);
        } else if (block.chainid == 1 || block.chainid == 4 || block.chainid == 3) {
            swapRouter = IRouter02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        } else if (block.chainid == 43114) {
            swapRouter = IRouter02(0x60aE616a2155Ee3d9A68541Ba4544862310933d4);
        } else if (block.chainid == 250) {
            swapRouter = IRouter02(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        } else {
            revert("Chain not valid");
        }
        liquidityAdd[msg.sender] = true;
        balance[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);

        lpPair = IFactoryV2(swapRouter.factory()).createPair(swapRouter.WETH(), address(this));
        isLpPair[lpPair] = true;
        _approve(msg.sender, address(swapRouter), type(uint256).max);
        _approve(address(this), address(swapRouter), type(uint256).max);
    }
    
    receive() external payable {}

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

        function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

        function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: Zero Address");
        require(spender != address(0), "ERC20: Zero Address");

        _allowances[sender][spender] = amount;
    }

        function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] -= amount;
        }

        return _transfer(sender, recipient, amount);
    }
    function isNoFeeWallet(address account) external view returns(bool) {
        return _noFee[account];
    }

    function setNoFeeWallet(address account, bool enabled) public onlyOwner {
        _noFee[account] = enabled;
    }

    function isLimitedAddress(address ins, address out) internal view returns (bool) {

        bool isLimited = ins != owner()
            && out != owner() && msg.sender != owner()
            && !liquidityAdd[ins]  && !liquidityAdd[out] && out != DEAD && out != address(0) && out != address(this);
            return isLimited;
    }

    function is_buy(address ins, address out) internal view returns (bool) {
        bool _is_buy = !isLpPair[out] && isLpPair[ins];
        return _is_buy;
    }

    function is_sell(address ins, address out) internal view returns (bool) { 
        bool _is_sell = isLpPair[out] && !isLpPair[ins];
        return _is_sell;
    } 

    function canSwap(address ins, address out) internal view returns (bool) {
        bool canswap = canSwapFees && !isPresaleAddress[ins] && !isPresaleAddress[out];

        return canswap;
    }

    function changeLpPair(address newPair) external onlyOwner {
        isLpPair[newPair] = true;
        emit _changePair(newPair);
    }

    function toggleCanSwapFees(bool yesno) external onlyOwner {
        require(canSwapFees != yesno,"Bool is the same");
        canSwapFees = yesno;
        emit _toggleCanSwapFees(yesno);
    }

    function _transfer(address from, address to, uint256 amount) internal returns  (bool) {
        bool takeFee = true;
        require(to != address(0), "ERC20: transfer to the zero address");
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (isLimitedAddress(from,to)) {
            require(isTradingEnabled,"Trading is not enabled");
        }


        if(is_sell(from, to) &&  !inSwap && canSwap(from, to)) {
            uint256 contractTokenBalance = balanceOf(address(this));
            if(contractTokenBalance >= swapThreshold) { internalSwap(contractTokenBalance); }
        }

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

        balance[from] -= amount; uint256 amountAfterFee = (takeFee) ? takeTaxes(from, is_buy(from, to), is_sell(from, to), amount) : amount;
        balance[to] += amountAfterFee; emit Transfer(from, to, amountAfterFee);

        return true;

    }

    function changeWallets(address marketing) external onlyOwner {
        marketingAddress = payable(marketing);
        emit _changeWallets(marketing);
    }


    function takeTaxes(address from, bool isbuy, bool issell, uint256 amount) internal returns (uint256) {
        uint256 fee;
        if (isbuy)  fee = buyfee;  else if (issell)  fee = sellfee;  else  fee = transferfee; 
        if (fee == 0)  return amount;
        uint256 feeAmount = amount * fee / fee_denominator;
        if (feeAmount > 0) {

            balance[address(this)] += feeAmount;
            emit Transfer(from, address(this), feeAmount);
            
        }
        return amount - feeAmount;
    }

    function internalSwap(uint256 contractTokenBalance) internal inSwapFlag {
        
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = swapRouter.WETH();

        if (_allowances[address(this)][address(swapRouter)] != type(uint256).max) {
            _allowances[address(this)][address(swapRouter)] = type(uint256).max;
        }

        try swapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractTokenBalance,
            0,
            path,
            address(this),
            block.timestamp
        ) {} catch {
            return;
        }
        bool success;

        if(address(this).balance > 0) {(success,) = marketingAddress.call{value: address(this).balance, gas: 35000}("");}

    }

        function setPresaleAddress(address presale, bool yesno) external onlyOwner {
            require(isPresaleAddress[presale] != yesno,"Same bool");
            isPresaleAddress[presale] = yesno;
            _noFee[presale] = yesno;
            liquidityAdd[presale] = yesno;
            emit _setPresaleAddress(presale, yesno);
        }

        function enableTrading() external onlyOwner {
            require(!isTradingEnabled, "Trading already enabled");
            isTradingEnabled = true;
            emit _enableTrading();
        }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newLpPair","type":"address"}],"name":"_changePair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketing","type":"address"}],"name":"_changeWallets","type":"event"},{"anonymous":false,"inputs":[],"name":"_enableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"_setPresaleAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"_toggleCanSwapFees","type":"event"},{"inputs":[],"name":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newPair","type":"address"}],"name":"changeLpPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"}],"name":"changeWallets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fee_denominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isNoFeeWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setNoFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"presale","type":"address"},{"internalType":"bool","name":"yesno","type":"bool"}],"name":"setPresaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapRouter","outputs":[{"internalType":"contract IRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"yesno","type":"bool"}],"name":"toggleCanSwapFees","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":[],"name":"transferfee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760006101000a81548160ff02191690831515021790555073c8d46dacd44890b41516db003d4da965fca7a632600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600960146101000a81548160ff0219169083151502179055503480156200009c57600080fd5b50620000bd620000b16200078d60201b60201c565b6200079560201b60201c565b6001600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506038460362000179577310ed43c718714eb63d5aa57b78b54704e256024e600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000364565b60614603620001dd5773d99d1c33f9fc3444f8101754abc46c52416550d1600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000363565b6001461480620001ed5750600446145b80620001f95750600346145b156200025a57737a250d5630b4cf539739df2c5dacb4c659f2488d600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000362565b61a86a4603620002bf577360ae616a2155ee3d9a68541ba4544862310933d4600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000361565b60fa4603620003235773f491e7b69e4244ad4002bc14e878a34207e38c29600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000360565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003579062000a24565b60405180910390fd5b5b5b5b5b6001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555068056bc75e2d63100000600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef68056bc75e2d6310000060405162000472919062000a61565b60405180910390a3600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004e8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200050e919062000ae8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000597573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005bd919062000ae8565b306040518363ffffffff1660e01b8152600401620005dd92919062000b2b565b6020604051808303816000875af1158015620005fd573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000623919062000ae8565b600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160046000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200073233600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200085960201b60201c565b6200078730600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200085960201b60201c565b62000bca565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008cb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c29062000ba8565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200093d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009349062000ba8565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600082825260208201905092915050565b7f436861696e206e6f742076616c69640000000000000000000000000000000000600082015250565b600062000a0c600f83620009c3565b915062000a1982620009d4565b602082019050919050565b6000602082019050818103600083015262000a3f81620009fd565b9050919050565b6000819050919050565b62000a5b8162000a46565b82525050565b600060208201905062000a78600083018462000a50565b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ab08262000a83565b9050919050565b62000ac28162000aa3565b811462000ace57600080fd5b50565b60008151905062000ae28162000ab7565b92915050565b60006020828403121562000b015762000b0062000a7e565b5b600062000b118482850162000ad1565b91505092915050565b62000b258162000aa3565b82525050565b600060408201905062000b42600083018562000b1a565b62000b51602083018462000b1a565b9392505050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b600062000b90601383620009c3565b915062000b9d8262000b58565b602082019050919050565b6000602082019050818103600083015262000bc38162000b81565b9050919050565b6131108062000bda6000396000f3fe6080604052600436106101d15760003560e01c806354de7bee116100f7578063a9059cbb11610095578063dc9d75b011610064578063dc9d75b014610663578063dd62ed3e1461068e578063e9451f5f146106cb578063f2fde38b146106f6576101d8565b8063a9059cbb146105a9578063c31c9c07146105e6578063c4ab12b514610611578063d5914dc01461063a576101d8565b8063893d20e8116100d1578063893d20e8146105115780638a8c523c1461053c5780638da5cb5b1461055357806395d89b411461057e576101d8565b806354de7bee1461049257806370a08231146104bd578063715018a6146104fa576101d8565b806318160ddd1161016f578063313ce5671161013e578063313ce567146103e85780633cd17c96146104135780633eaaf86b1461043c578063452ed4f114610467576101d8565b806318160ddd146103185780631dc369451461034357806323b872dd1461036e57806327889862146103ab576101d8565b806306fdde03116101ab57806306fdde031461025e578063095ea7b3146102895780630faba554146102c6578063111a60b0146102ef576101d8565b806303fd2a45146101dd5780630445b66714610208578063064a59d014610233576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261071f565b6040516101ff9190612491565b60405180910390f35b34801561021457600080fd5b5061021d610725565b60405161022a91906124c5565b60405180910390f35b34801561023f57600080fd5b5061024861073f565b60405161025591906124fb565b60405180910390f35b34801561026a57600080fd5b50610273610752565b60405161028091906125a6565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190612625565b61078f565b6040516102bd91906124fb565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612691565b6107a6565b005b3480156102fb57600080fd5b50610316600480360381019061031191906126d1565b61087d565b005b34801561032457600080fd5b5061032d6109a2565b60405161033a91906124c5565b60405180910390f35b34801561034f57600080fd5b506103586109c8565b60405161036591906124c5565b60405180910390f35b34801561037a57600080fd5b50610395600480360381019061039091906126fe565b6109cd565b6040516103a291906124fb565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612751565b610b1a565b6040516103df91906124fb565b60405180910390f35b3480156103f457600080fd5b506103fd610b70565b60405161040a919061279a565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612691565b610b8e565b005b34801561044857600080fd5b50610451610dde565b60405161045e91906124c5565b60405180910390f35b34801561047357600080fd5b5061047c610deb565b6040516104899190612491565b60405180910390f35b34801561049e57600080fd5b506104a7610e11565b6040516104b491906124c5565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df9190612751565b610e16565b6040516104f191906124c5565b60405180910390f35b34801561050657600080fd5b5061050f610e5f565b005b34801561051d57600080fd5b50610526610ee7565b6040516105339190612491565b60405180910390f35b34801561054857600080fd5b50610551610ef6565b005b34801561055f57600080fd5b5061056861100b565b6040516105759190612491565b60405180910390f35b34801561058a57600080fd5b50610593611034565b6040516105a091906125a6565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190612625565b611071565b6040516105dd91906124fb565b60405180910390f35b3480156105f257600080fd5b506105fb611089565b6040516106089190612814565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190612751565b6110af565b005b34801561064657600080fd5b50610661600480360381019061065c9190612751565b6111a6565b005b34801561066f57600080fd5b506106786112b4565b60405161068591906124c5565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b0919061282f565b6112ba565b6040516106c291906124c5565b60405180910390f35b3480156106d757600080fd5b506106e0611341565b6040516106ed91906124c5565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190612751565b611346565b005b61dead81565b61138868056bc75e2d6310000061073c91906128cd565b81565b600960149054906101000a900460ff1681565b60606040518060400160405280600781526020017f456c6f6e69756d00000000000000000000000000000000000000000000000000815250905090565b600061079c33848461143d565b6001905092915050565b6107ae6115a1565b73ffffffffffffffffffffffffffffffffffffffff166107cc61100b565b73ffffffffffffffffffffffffffffffffffffffff1614610822576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108199061294a565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108856115a1565b73ffffffffffffffffffffffffffffffffffffffff166108a361100b565b73ffffffffffffffffffffffffffffffffffffffff16146108f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f09061294a565b60405180910390fd5b801515600760009054906101000a900460ff1615150361094e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610945906129b6565b60405180910390fd5b80600760006101000a81548160ff0219169083151502179055507f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e88160405161099791906124fb565b60405180910390a150565b60008068056bc75e2d63100000036109b957600080fd5b68056bc75e2d63100000905090565b600081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b065781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610afe91906129d6565b925050819055505b610b118484846115a9565b90509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008068056bc75e2d6310000003610b8757600080fd5b6009905090565b610b966115a1565b73ffffffffffffffffffffffffffffffffffffffff16610bb461100b565b73ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c019061294a565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390612a56565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b7645138282604051610dd2929190612a76565b60405180910390a15050565b68056bc75e2d6310000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e676115a1565b73ffffffffffffffffffffffffffffffffffffffff16610e8561100b565b73ffffffffffffffffffffffffffffffffffffffff1614610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed29061294a565b60405180910390fd5b610ee56000611997565b565b6000610ef161100b565b905090565b610efe6115a1565b73ffffffffffffffffffffffffffffffffffffffff16610f1c61100b565b73ffffffffffffffffffffffffffffffffffffffff1614610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f699061294a565b60405180910390fd5b600960149054906101000a900460ff1615610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990612aeb565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055507fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f456c6f6e69756d00000000000000000000000000000000000000000000000000815250905090565b600061107e3384846115a9565b506001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110b76115a1565b73ffffffffffffffffffffffffffffffffffffffff166110d561100b565b73ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111229061294a565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb074145dac98cbf04c5e3a6d58501e8e3aa6eb107008ec598af2309ae5179dfe8160405161119b9190612491565b60405180910390a150565b6111ae6115a1565b73ffffffffffffffffffffffffffffffffffffffff166111cc61100b565b73ffffffffffffffffffffffffffffffffffffffff1614611222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112199061294a565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f03b62011431502c791d443ee6149c9ec9b43632aeb5eb55c621104c128fe02f7816040516112a99190612491565b60405180910390a150565b6103e881565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602881565b61134e6115a1565b73ffffffffffffffffffffffffffffffffffffffff1661136c61100b565b73ffffffffffffffffffffffffffffffffffffffff16146113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b99061294a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890612b7d565b60405180910390fd5b61143a81611997565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612be9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151290612be9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161690612c7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590612d0d565b60405180910390fd5b600083116116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612d9f565b60405180910390fd5b6116db8585611a5b565b1561173057600960149054906101000a900460ff1661172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690612e0b565b60405180910390fd5b5b61173a8585611c76565b80156117535750600960159054906101000a900460ff16155b801561176557506117648585611d28565b5b156117a057600061177530610e16565b905061138868056bc75e2d6310000061178e91906128cd565b811061179e5761179d81611df3565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118415750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561184b57600090505b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461189a91906129d6565b925050819055506000816118ae57836118cd565b6118cc866118bc888861226b565b6118c68989611c76565b8761231d565b5b905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461191e9190612e2b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161198291906124c5565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611a6661100b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ad45750611aa461100b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b135750611ae361100b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b695750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bbf5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bf9575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c325750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c6a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d1c5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b600080600760009054906101000a900460ff168015611d915750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611de75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600960156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e2b57611e2a612e5f565b5b604051908082528060200260200182016040528015611e595781602001602082028036833780820191505090505b5090503081600081518110611e7157611e70612e8e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3c9190612ed2565b81600181518110611f5057611f4f612e8e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612113577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612177959493929190612ff8565b600060405180830381600087803b15801561219157600080fd5b505af19250505080156121a2575060015b6121ac575061224d565b60008047111561224a57600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b89060405161220090613083565b600060405180830381858888f193505050503d806000811461223e576040519150601f19603f3d011682016040523d82523d6000602084013e612243565b606091505b5050809150505b50505b6000600960156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123115750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b600080841561232f5760009050612344565b831561233e5760289050612343565b600090505b5b600081036123555782915050612448565b60006103e882856123669190613098565b61237091906128cd565b905060008111156124375780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123ca9190612e2b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161242e91906124c5565b60405180910390a35b808461244391906129d6565b925050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061247b82612450565b9050919050565b61248b81612470565b82525050565b60006020820190506124a66000830184612482565b92915050565b6000819050919050565b6124bf816124ac565b82525050565b60006020820190506124da60008301846124b6565b92915050565b60008115159050919050565b6124f5816124e0565b82525050565b600060208201905061251060008301846124ec565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612550578082015181840152602081019050612535565b60008484015250505050565b6000601f19601f8301169050919050565b600061257882612516565b6125828185612521565b9350612592818560208601612532565b61259b8161255c565b840191505092915050565b600060208201905081810360008301526125c0818461256d565b905092915050565b600080fd5b6125d681612470565b81146125e157600080fd5b50565b6000813590506125f3816125cd565b92915050565b612602816124ac565b811461260d57600080fd5b50565b60008135905061261f816125f9565b92915050565b6000806040838503121561263c5761263b6125c8565b5b600061264a858286016125e4565b925050602061265b85828601612610565b9150509250929050565b61266e816124e0565b811461267957600080fd5b50565b60008135905061268b81612665565b92915050565b600080604083850312156126a8576126a76125c8565b5b60006126b6858286016125e4565b92505060206126c78582860161267c565b9150509250929050565b6000602082840312156126e7576126e66125c8565b5b60006126f58482850161267c565b91505092915050565b600080600060608486031215612717576127166125c8565b5b6000612725868287016125e4565b9350506020612736868287016125e4565b925050604061274786828701612610565b9150509250925092565b600060208284031215612767576127666125c8565b5b6000612775848285016125e4565b91505092915050565b600060ff82169050919050565b6127948161277e565b82525050565b60006020820190506127af600083018461278b565b92915050565b6000819050919050565b60006127da6127d56127d084612450565b6127b5565b612450565b9050919050565b60006127ec826127bf565b9050919050565b60006127fe826127e1565b9050919050565b61280e816127f3565b82525050565b60006020820190506128296000830184612805565b92915050565b60008060408385031215612846576128456125c8565b5b6000612854858286016125e4565b9250506020612865858286016125e4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128d8826124ac565b91506128e3836124ac565b9250826128f3576128f261286f565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612934602083612521565b915061293f826128fe565b602082019050919050565b6000602082019050818103600083015261296381612927565b9050919050565b7f426f6f6c206973207468652073616d6500000000000000000000000000000000600082015250565b60006129a0601083612521565b91506129ab8261296a565b602082019050919050565b600060208201905081810360008301526129cf81612993565b9050919050565b60006129e1826124ac565b91506129ec836124ac565b9250828203905081811115612a0457612a0361289e565b5b92915050565b7f53616d6520626f6f6c0000000000000000000000000000000000000000000000600082015250565b6000612a40600983612521565b9150612a4b82612a0a565b602082019050919050565b60006020820190508181036000830152612a6f81612a33565b9050919050565b6000604082019050612a8b6000830185612482565b612a9860208301846124ec565b9392505050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612ad5601783612521565b9150612ae082612a9f565b602082019050919050565b60006020820190508181036000830152612b0481612ac8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b67602683612521565b9150612b7282612b0b565b604082019050919050565b60006020820190508181036000830152612b9681612b5a565b9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612bd3601383612521565b9150612bde82612b9d565b602082019050919050565b60006020820190508181036000830152612c0281612bc6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c65602383612521565b9150612c7082612c09565b604082019050919050565b60006020820190508181036000830152612c9481612c58565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612cf7602583612521565b9150612d0282612c9b565b604082019050919050565b60006020820190508181036000830152612d2681612cea565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d89602983612521565b9150612d9482612d2d565b604082019050919050565b60006020820190508181036000830152612db881612d7c565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612df5601683612521565b9150612e0082612dbf565b602082019050919050565b60006020820190508181036000830152612e2481612de8565b9050919050565b6000612e36826124ac565b9150612e41836124ac565b9250828201905080821115612e5957612e5861289e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ecc816125cd565b92915050565b600060208284031215612ee857612ee76125c8565b5b6000612ef684828501612ebd565b91505092915050565b6000819050919050565b6000612f24612f1f612f1a84612eff565b6127b5565b6124ac565b9050919050565b612f3481612f09565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f6f81612470565b82525050565b6000612f818383612f66565b60208301905092915050565b6000602082019050919050565b6000612fa582612f3a565b612faf8185612f45565b9350612fba83612f56565b8060005b83811015612feb578151612fd28882612f75565b9750612fdd83612f8d565b925050600181019050612fbe565b5085935050505092915050565b600060a08201905061300d60008301886124b6565b61301a6020830187612f2b565b818103604083015261302c8186612f9a565b905061303b6060830185612482565b61304860808301846124b6565b9695505050505050565b600081905092915050565b50565b600061306d600083613052565b91506130788261305d565b600082019050919050565b600061308e82613060565b9150819050919050565b60006130a3826124ac565b91506130ae836124ac565b92508282026130bc816124ac565b915082820484148315176130d3576130d261289e565b5b509291505056fea26469706673582212206ffd7dda783da45c74baf94bbe4212c2a82228d7f235623b45fa129ba285209064736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d15760003560e01c806354de7bee116100f7578063a9059cbb11610095578063dc9d75b011610064578063dc9d75b014610663578063dd62ed3e1461068e578063e9451f5f146106cb578063f2fde38b146106f6576101d8565b8063a9059cbb146105a9578063c31c9c07146105e6578063c4ab12b514610611578063d5914dc01461063a576101d8565b8063893d20e8116100d1578063893d20e8146105115780638a8c523c1461053c5780638da5cb5b1461055357806395d89b411461057e576101d8565b806354de7bee1461049257806370a08231146104bd578063715018a6146104fa576101d8565b806318160ddd1161016f578063313ce5671161013e578063313ce567146103e85780633cd17c96146104135780633eaaf86b1461043c578063452ed4f114610467576101d8565b806318160ddd146103185780631dc369451461034357806323b872dd1461036e57806327889862146103ab576101d8565b806306fdde03116101ab57806306fdde031461025e578063095ea7b3146102895780630faba554146102c6578063111a60b0146102ef576101d8565b806303fd2a45146101dd5780630445b66714610208578063064a59d014610233576101d8565b366101d857005b600080fd5b3480156101e957600080fd5b506101f261071f565b6040516101ff9190612491565b60405180910390f35b34801561021457600080fd5b5061021d610725565b60405161022a91906124c5565b60405180910390f35b34801561023f57600080fd5b5061024861073f565b60405161025591906124fb565b60405180910390f35b34801561026a57600080fd5b50610273610752565b60405161028091906125a6565b60405180910390f35b34801561029557600080fd5b506102b060048036038101906102ab9190612625565b61078f565b6040516102bd91906124fb565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e89190612691565b6107a6565b005b3480156102fb57600080fd5b50610316600480360381019061031191906126d1565b61087d565b005b34801561032457600080fd5b5061032d6109a2565b60405161033a91906124c5565b60405180910390f35b34801561034f57600080fd5b506103586109c8565b60405161036591906124c5565b60405180910390f35b34801561037a57600080fd5b50610395600480360381019061039091906126fe565b6109cd565b6040516103a291906124fb565b60405180910390f35b3480156103b757600080fd5b506103d260048036038101906103cd9190612751565b610b1a565b6040516103df91906124fb565b60405180910390f35b3480156103f457600080fd5b506103fd610b70565b60405161040a919061279a565b60405180910390f35b34801561041f57600080fd5b5061043a60048036038101906104359190612691565b610b8e565b005b34801561044857600080fd5b50610451610dde565b60405161045e91906124c5565b60405180910390f35b34801561047357600080fd5b5061047c610deb565b6040516104899190612491565b60405180910390f35b34801561049e57600080fd5b506104a7610e11565b6040516104b491906124c5565b60405180910390f35b3480156104c957600080fd5b506104e460048036038101906104df9190612751565b610e16565b6040516104f191906124c5565b60405180910390f35b34801561050657600080fd5b5061050f610e5f565b005b34801561051d57600080fd5b50610526610ee7565b6040516105339190612491565b60405180910390f35b34801561054857600080fd5b50610551610ef6565b005b34801561055f57600080fd5b5061056861100b565b6040516105759190612491565b60405180910390f35b34801561058a57600080fd5b50610593611034565b6040516105a091906125a6565b60405180910390f35b3480156105b557600080fd5b506105d060048036038101906105cb9190612625565b611071565b6040516105dd91906124fb565b60405180910390f35b3480156105f257600080fd5b506105fb611089565b6040516106089190612814565b60405180910390f35b34801561061d57600080fd5b5061063860048036038101906106339190612751565b6110af565b005b34801561064657600080fd5b50610661600480360381019061065c9190612751565b6111a6565b005b34801561066f57600080fd5b506106786112b4565b60405161068591906124c5565b60405180910390f35b34801561069a57600080fd5b506106b560048036038101906106b0919061282f565b6112ba565b6040516106c291906124c5565b60405180910390f35b3480156106d757600080fd5b506106e0611341565b6040516106ed91906124c5565b60405180910390f35b34801561070257600080fd5b5061071d60048036038101906107189190612751565b611346565b005b61dead81565b61138868056bc75e2d6310000061073c91906128cd565b81565b600960149054906101000a900460ff1681565b60606040518060400160405280600781526020017f456c6f6e69756d00000000000000000000000000000000000000000000000000815250905090565b600061079c33848461143d565b6001905092915050565b6107ae6115a1565b73ffffffffffffffffffffffffffffffffffffffff166107cc61100b565b73ffffffffffffffffffffffffffffffffffffffff1614610822576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108199061294a565b60405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6108856115a1565b73ffffffffffffffffffffffffffffffffffffffff166108a361100b565b73ffffffffffffffffffffffffffffffffffffffff16146108f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108f09061294a565b60405180910390fd5b801515600760009054906101000a900460ff1615150361094e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610945906129b6565b60405180910390fd5b80600760006101000a81548160ff0219169083151502179055507f4686eea8d0ea8d72497b77f908906325d7bbafd9f1d6753522573258958656e88160405161099791906124fb565b60405180910390a150565b60008068056bc75e2d63100000036109b957600080fd5b68056bc75e2d63100000905090565b600081565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610b065781600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610afe91906129d6565b925050819055505b610b118484846115a9565b90509392505050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008068056bc75e2d6310000003610b8757600080fd5b6009905090565b610b966115a1565b73ffffffffffffffffffffffffffffffffffffffff16610bb461100b565b73ffffffffffffffffffffffffffffffffffffffff1614610c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c019061294a565b60405180910390fd5b801515600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390612a56565b60405180910390fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f7f7f90cb020c1deb8939c26cf0790751e539157b1fd2039166fcd09a8b7645138282604051610dd2929190612a76565b60405180910390a15050565b68056bc75e2d6310000081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600081565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e676115a1565b73ffffffffffffffffffffffffffffffffffffffff16610e8561100b565b73ffffffffffffffffffffffffffffffffffffffff1614610edb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed29061294a565b60405180910390fd5b610ee56000611997565b565b6000610ef161100b565b905090565b610efe6115a1565b73ffffffffffffffffffffffffffffffffffffffff16610f1c61100b565b73ffffffffffffffffffffffffffffffffffffffff1614610f72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f699061294a565b60405180910390fd5b600960149054906101000a900460ff1615610fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb990612aeb565b60405180910390fd5b6001600960146101000a81548160ff0219169083151502179055507fa0ac5e19ca3a09af9a3a13c5c51f911c89eefd4b9eb548f4766b991b14ad686860405160405180910390a1565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600781526020017f456c6f6e69756d00000000000000000000000000000000000000000000000000815250905090565b600061107e3384846115a9565b506001905092915050565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6110b76115a1565b73ffffffffffffffffffffffffffffffffffffffff166110d561100b565b73ffffffffffffffffffffffffffffffffffffffff161461112b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111229061294a565b60405180910390fd5b80600760016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fb074145dac98cbf04c5e3a6d58501e8e3aa6eb107008ec598af2309ae5179dfe8160405161119b9190612491565b60405180910390a150565b6111ae6115a1565b73ffffffffffffffffffffffffffffffffffffffff166111cc61100b565b73ffffffffffffffffffffffffffffffffffffffff1614611222576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112199061294a565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f03b62011431502c791d443ee6149c9ec9b43632aeb5eb55c621104c128fe02f7816040516112a99190612491565b60405180910390a150565b6103e881565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b602881565b61134e6115a1565b73ffffffffffffffffffffffffffffffffffffffff1661136c61100b565b73ffffffffffffffffffffffffffffffffffffffff16146113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b99061294a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611431576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142890612b7d565b60405180910390fd5b61143a81611997565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114a390612be9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361151b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151290612be9565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b600033905090565b60008060019050600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361161f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161690612c7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff160361168e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168590612d0d565b60405180910390fd5b600083116116d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c890612d9f565b60405180910390fd5b6116db8585611a5b565b1561173057600960149054906101000a900460ff1661172f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172690612e0b565b60405180910390fd5b5b61173a8585611c76565b80156117535750600960159054906101000a900460ff16155b801561176557506117648585611d28565b5b156117a057600061177530610e16565b905061138868056bc75e2d6310000061178e91906128cd565b811061179e5761179d81611df3565b5b505b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118415750600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561184b57600090505b82600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461189a91906129d6565b925050819055506000816118ae57836118cd565b6118cc866118bc888861226b565b6118c68989611c76565b8761231d565b5b905080600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461191e9190612e2b565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161198291906124c5565b60405180910390a36001925050509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080611a6661100b565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611ad45750611aa461100b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b135750611ae361100b565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b8015611b695750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bbf5750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bf9575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c325750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c6a57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b90508091505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015611d1c5750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b600080600760009054906101000a900460ff168015611d915750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611de75750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b90508091505092915050565b6001600960156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611e2b57611e2a612e5f565b5b604051908082528060200260200182016040528015611e595781602001602082028036833780820191505090505b5090503081600081518110611e7157611e70612e8e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f3c9190612ed2565b81600181518110611f5057611f4f612e8e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414612113577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612177959493929190612ff8565b600060405180830381600087803b15801561219157600080fd5b505af19250505080156121a2575060015b6121ac575061224d565b60008047111561224a57600760019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476188b89060405161220090613083565b600060405180830381858888f193505050503d806000811461223e576040519150601f19603f3d011682016040523d82523d6000602084013e612243565b606091505b5050809150505b50505b6000600960156101000a81548160ff02191690831515021790555050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156123115750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b90508091505092915050565b600080841561232f5760009050612344565b831561233e5760289050612343565b600090505b5b600081036123555782915050612448565b60006103e882856123669190613098565b61237091906128cd565b905060008111156124375780600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123ca9190612e2b565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161242e91906124c5565b60405180910390a35b808461244391906129d6565b925050505b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061247b82612450565b9050919050565b61248b81612470565b82525050565b60006020820190506124a66000830184612482565b92915050565b6000819050919050565b6124bf816124ac565b82525050565b60006020820190506124da60008301846124b6565b92915050565b60008115159050919050565b6124f5816124e0565b82525050565b600060208201905061251060008301846124ec565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612550578082015181840152602081019050612535565b60008484015250505050565b6000601f19601f8301169050919050565b600061257882612516565b6125828185612521565b9350612592818560208601612532565b61259b8161255c565b840191505092915050565b600060208201905081810360008301526125c0818461256d565b905092915050565b600080fd5b6125d681612470565b81146125e157600080fd5b50565b6000813590506125f3816125cd565b92915050565b612602816124ac565b811461260d57600080fd5b50565b60008135905061261f816125f9565b92915050565b6000806040838503121561263c5761263b6125c8565b5b600061264a858286016125e4565b925050602061265b85828601612610565b9150509250929050565b61266e816124e0565b811461267957600080fd5b50565b60008135905061268b81612665565b92915050565b600080604083850312156126a8576126a76125c8565b5b60006126b6858286016125e4565b92505060206126c78582860161267c565b9150509250929050565b6000602082840312156126e7576126e66125c8565b5b60006126f58482850161267c565b91505092915050565b600080600060608486031215612717576127166125c8565b5b6000612725868287016125e4565b9350506020612736868287016125e4565b925050604061274786828701612610565b9150509250925092565b600060208284031215612767576127666125c8565b5b6000612775848285016125e4565b91505092915050565b600060ff82169050919050565b6127948161277e565b82525050565b60006020820190506127af600083018461278b565b92915050565b6000819050919050565b60006127da6127d56127d084612450565b6127b5565b612450565b9050919050565b60006127ec826127bf565b9050919050565b60006127fe826127e1565b9050919050565b61280e816127f3565b82525050565b60006020820190506128296000830184612805565b92915050565b60008060408385031215612846576128456125c8565b5b6000612854858286016125e4565b9250506020612865858286016125e4565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006128d8826124ac565b91506128e3836124ac565b9250826128f3576128f261286f565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612934602083612521565b915061293f826128fe565b602082019050919050565b6000602082019050818103600083015261296381612927565b9050919050565b7f426f6f6c206973207468652073616d6500000000000000000000000000000000600082015250565b60006129a0601083612521565b91506129ab8261296a565b602082019050919050565b600060208201905081810360008301526129cf81612993565b9050919050565b60006129e1826124ac565b91506129ec836124ac565b9250828203905081811115612a0457612a0361289e565b5b92915050565b7f53616d6520626f6f6c0000000000000000000000000000000000000000000000600082015250565b6000612a40600983612521565b9150612a4b82612a0a565b602082019050919050565b60006020820190508181036000830152612a6f81612a33565b9050919050565b6000604082019050612a8b6000830185612482565b612a9860208301846124ec565b9392505050565b7f54726164696e6720616c726561647920656e61626c6564000000000000000000600082015250565b6000612ad5601783612521565b9150612ae082612a9f565b602082019050919050565b60006020820190508181036000830152612b0481612ac8565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612b67602683612521565b9150612b7282612b0b565b604082019050919050565b60006020820190508181036000830152612b9681612b5a565b9050919050565b7f45524332303a205a65726f204164647265737300000000000000000000000000600082015250565b6000612bd3601383612521565b9150612bde82612b9d565b602082019050919050565b60006020820190508181036000830152612c0281612bc6565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c65602383612521565b9150612c7082612c09565b604082019050919050565b60006020820190508181036000830152612c9481612c58565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612cf7602583612521565b9150612d0282612c9b565b604082019050919050565b60006020820190508181036000830152612d2681612cea565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d89602983612521565b9150612d9482612d2d565b604082019050919050565b60006020820190508181036000830152612db881612d7c565b9050919050565b7f54726164696e67206973206e6f7420656e61626c656400000000000000000000600082015250565b6000612df5601683612521565b9150612e0082612dbf565b602082019050919050565b60006020820190508181036000830152612e2481612de8565b9050919050565b6000612e36826124ac565b9150612e41836124ac565b9250828201905080821115612e5957612e5861289e565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ecc816125cd565b92915050565b600060208284031215612ee857612ee76125c8565b5b6000612ef684828501612ebd565b91505092915050565b6000819050919050565b6000612f24612f1f612f1a84612eff565b6127b5565b6124ac565b9050919050565b612f3481612f09565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f6f81612470565b82525050565b6000612f818383612f66565b60208301905092915050565b6000602082019050919050565b6000612fa582612f3a565b612faf8185612f45565b9350612fba83612f56565b8060005b83811015612feb578151612fd28882612f75565b9750612fdd83612f8d565b925050600181019050612fbe565b5085935050505092915050565b600060a08201905061300d60008301886124b6565b61301a6020830187612f2b565b818103604083015261302c8186612f9a565b905061303b6060830185612482565b61304860808301846124b6565b9695505050505050565b600081905092915050565b50565b600061306d600083613052565b91506130788261305d565b600082019050919050565b600061308e82613060565b9150819050919050565b60006130a3826124ac565b91506130ae836124ac565b92508282026130bc816124ac565b915082820484148315176130d3576130d261289e565b5b509291505056fea26469706673582212206ffd7dda783da45c74baf94bbe4212c2a82228d7f235623b45fa129ba285209064736f6c63430008130033

Deployed Bytecode Sourcemap

4873:9154:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6685:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6115:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6793:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5271:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8643:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9518:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10680:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4927:125;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6182:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9089:306;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9401:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5058:117;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13467:341;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6046:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6765:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6266:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5582:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;850:94;;;;;;;;;;;;;:::i;:::-;;5357:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13820:198;;;;;;;;;;;;;:::i;:::-;;627:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5181:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8466:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6510:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11947:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10535:137;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6312:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5443:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6223:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;952:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6685:73;6716:42;6685:73;:::o;6115:60::-;6170:5;6085:23;6155:20;;;;:::i;:::-;6115:60;:::o;6793:36::-;;;;;;;;;;;;;:::o;5271:80::-;5319:13;5343:5;;;;;;;;;;;;;;;;;5336:12;;5271:80;:::o;8643:161::-;8720:4;8737:37;8746:10;8758:7;8767:6;8737:8;:37::i;:::-;8792:4;8785:11;;8643:161;;;;:::o;9518:116::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9619:7:::1;9601:6;:15;9608:7;9601:15;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;9518:116:::0;;:::o;10680:196::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10772:5:::1;10757:20;;:11;;;;;;;;;;;:20;;::::0;10749:48:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10822:5;10808:11;;:19;;;;;;;;;;;;;;;;;;10843:25;10862:5;10843:25;;;;;;:::i;:::-;;;;;;;;10680:196:::0;:::o;4927:125::-;4982:7;5013:1;6085:23;4997:17;4993:36;;5018:8;;;4993:36;6085:23;5030:19;;4927:125;:::o;6182:34::-;6215:1;6182:34;:::o;9089:306::-;9189:4;9245:17;9210:11;:19;9222:6;9210:19;;;;;;;;;;;;;;;:31;9230:10;9210:31;;;;;;;;;;;;;;;;:52;9206:126;;9314:6;9279:11;:19;9291:6;9279:19;;;;;;;;;;;;;;;:31;9299:10;9279:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;9206:126;9351:36;9361:6;9369:9;9380:6;9351:9;:36::i;:::-;9344:43;;9089:306;;;;;:::o;9401:109::-;9463:4;9487:6;:15;9494:7;9487:15;;;;;;;;;;;;;;;;;;;;;;;;;9480:22;;9401:109;;;:::o;5058:117::-;5110:5;5139:1;6085:23;5123:17;5119:36;;5144:8;;;5119:36;6677:1;5156:16;;5058:117;:::o;13467:341::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13594:5:::1;13565:34;;:16;:25;13582:7;13565:25;;;;;;;;;;;;;;;;;;;;;;;;;:34;;::::0;13557:55:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13655:5;13627:16;:25;13644:7;13627:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;13693:5;13675:6;:15;13682:7;13675:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;13737:5;13713:12;:21;13726:7;13713:21;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;13762:34;13781:7;13790:5;13762:34;;;;;;;:::i;:::-;;;;;;;;13467:341:::0;;:::o;6046:62::-;6085:23;6046:62;:::o;6765:21::-;;;;;;;;;;;;;:::o;6266:39::-;6304:1;6266:39;:::o;5582:117::-;5648:7;5675;:16;5683:7;5675:16;;;;;;;;;;;;;;;;5668:23;;5582:117;;;:::o;850:94::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;915:21:::1;933:1;915:9;:21::i;:::-;850:94::o:0;5357:80::-;5409:7;5427;:5;:7::i;:::-;5420:14;;5357:80;:::o;13820:198::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13888:16:::1;;;;;;;;;;;13887:17;13879:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13966:4;13947:16;;:23;;;;;;;;;;;;;;;;;;13990:16;;;;;;;;;;13820:198::o:0;627:87::-;673:7;700:6;;;;;;;;;;;693:13;;627:87;:::o;5181:84::-;5231:13;5255:7;;;;;;;;;;;;;;;;;5248:14;;5181:84;:::o;8466:165::-;8544:4;8561:40;8571:10;8583:9;8594:6;8561:9;:40::i;:::-;;8619:4;8612:11;;8466:165;;;;:::o;6510:27::-;;;;;;;;;;;;;:::o;11947:158::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;12046:9:::1;12019:16;;:37;;;;;;;;;;;;;;;;;;12072:25;12087:9;12072:25;;;;;;:::i;:::-;;;;;;;;11947:158:::0;:::o;10535:137::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10624:4:::1;10604:8;:17;10613:7;10604:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;10644:20;10656:7;10644:20;;;;;;:::i;:::-;;;;;;;;10535:137:::0;:::o;6312:47::-;6354:5;6312:47;:::o;5443:133::-;5527:7;5545:11;:19;5557:6;5545:19;;;;;;;;;;;;;;;:28;5565:7;5545:28;;;;;;;;;;;;;;;;5538:35;;5443:133;;;;:::o;6223:36::-;6257:2;6223:36;:::o;952:192::-;773:12;:10;:12::i;:::-;762:23;;:7;:5;:7::i;:::-;:23;;;754:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1061:1:::1;1041:22;;:8;:22;;::::0;1033:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1117:19;1127:8;1117:9;:19::i;:::-;952:192:::0;:::o;8816:261::-;8929:1;8911:20;;:6;:20;;;8903:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;8993:1;8974:21;;:7;:21;;;8966:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9063:6;9032:11;:19;9044:6;9032:19;;;;;;;;;;;;;;;:28;9052:7;9032:28;;;;;;;;;;;;;;;:37;;;;8816:261;;;:::o;147:107::-;192:15;235:10;220:26;;147:107;:::o;10884:1055::-;10964:4;10981:12;10996:4;10981:19;;11033:1;11019:16;;:2;:16;;;11011:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11110:1;11094:18;;:4;:18;;;11086:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11182:1;11173:6;:10;11165:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11246:25;11263:4;11268:2;11246:16;:25::i;:::-;11242:108;;;11296:16;;;;;;;;;;;11288:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;11242:108;11367:17;11375:4;11381:2;11367:7;:17::i;:::-;:29;;;;;11390:6;;;;;;;;;;;11389:7;11367:29;:50;;;;;11400:17;11408:4;11414:2;11400:7;:17::i;:::-;11367:50;11364:232;;;11434:28;11465:24;11483:4;11465:9;:24::i;:::-;11434:55;;6170:5;6085:23;6155:20;;;;:::i;:::-;11507;:37;11504:81;;11548:34;11561:20;11548:12;:34::i;:::-;11504:81;11419:177;11364:232;11612:6;:12;11619:4;11612:12;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;11628:6;:10;11635:2;11628:10;;;;;;;;;;;;;;;;;;;;;;;;;11612:26;11608:73;;;11664:5;11654:15;;11608:73;11710:6;11693:7;:13;11701:4;11693:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;11718:22;11744:7;11743:81;;11818:6;11743:81;;;11755:60;11765:4;11771:16;11778:4;11784:2;11771:6;:16::i;:::-;11789:17;11797:4;11803:2;11789:7;:17::i;:::-;11808:6;11755:9;:60::i;:::-;11743:81;11718:106;;11850:14;11835:7;:11;11843:2;11835:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;11886:2;11871:34;;11880:4;11871:34;;;11890:14;11871:34;;;;;;:::i;:::-;;;;;;;;11925:4;11918:11;;;;10884:1055;;;;;:::o;1152:173::-;1208:16;1227:6;;;;;;;;;;;1208:25;;1253:8;1244:6;;:17;;;;;;;;;;;;;;;;;;1308:8;1277:40;;1298:8;1277:40;;;;;;;;;;;;1197:128;1152:173;:::o;9642:338::-;9717:4;9736:14;9760:7;:5;:7::i;:::-;9753:14;;:3;:14;;;;:45;;;;;9791:7;:5;:7::i;:::-;9784:14;;:3;:14;;;;9753:45;:70;;;;;9816:7;:5;:7::i;:::-;9802:21;;:10;:21;;;;9753:70;:105;;;;;9841:12;:17;9854:3;9841:17;;;;;;;;;;;;;;;;;;;;;;;;;9840:18;9753:105;:128;;;;;9864:12;:17;9877:3;9864:17;;;;;;;;;;;;;;;;;;;;;;;;;9863:18;9753:128;:143;;;;;6716:42;9885:11;;:3;:11;;;;9753:143;:164;;;;;9915:1;9900:17;;:3;:17;;;;9753:164;:188;;;;;9936:4;9921:20;;:3;:20;;;;9753:188;9736:205;;9963:9;9956:16;;;9642:338;;;;:::o;10157:165::-;10223:4;10241:13;10257:8;:13;10266:3;10257:13;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;;;10275:8;:13;10284:3;10275:13;;;;;;;;;;;;;;;;;;;;;;;;;10274:14;10257:31;10241:47;;10306:8;10299:15;;;10157:165;;;;:::o;10331:196::-;10397:4;10414:12;10429:11;;;;;;;;;;;:37;;;;;10445:16;:21;10462:3;10445:21;;;;;;;;;;;;;;;;;;;;;;;;;10444:22;10429:37;:63;;;;;10471:16;:21;10488:3;10471:21;;;;;;;;;;;;;;;;;;;;;;;;;10470:22;10429:63;10414:78;;10512:7;10505:14;;;10331:196;;;;:::o;12653:802::-;6908:4;6899:6;;:13;;;;;;;;;;;;;;;;;;12746:21:::1;12784:1;12770:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12746:40;;12815:4;12797;12802:1;12797:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12841:10;;;;;;;;;;;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12831:4;12836:1;12831:7;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;::::0;::::1;12926:17;12875:11;:26;12895:4;12875:26;;;;;;;;;;;;;;;:47;12910:10;;;;;;;;;;;12875:47;;;;;;;;;;;;;;;;:68;12871:168;;13010:17;12960:11;:26;12980:4;12960:26;;;;;;;;;;;;;;;:47;12995:10;;;;;;;;;;;12960:47;;;;;;;;;;;;;;;:67;;;;12871:168;13055:10;;;;;;;;;;;:61;;;13131:20;13166:1;13182:4;13209;13229:15;13055:200;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;13051:247;;13280:7;;;13051:247;13308:12;13360:1:::0;13336:21:::1;:25;13333:113;;;13377:16;;;;;;;;;;;:21;;13406;13434:5;13377:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13364:80;;;;;13333:113;12725:730;;6923:1;6944:5:::0;6935:6;;:14;;;;;;;;;;;;;;;;;;12653:802;:::o;9988:161::-;10053:4;10070:12;10086:8;:13;10095:3;10086:13;;;;;;;;;;;;;;;;;;;;;;;;;10085:14;:31;;;;;10103:8;:13;10112:3;10103:13;;;;;;;;;;;;;;;;;;;;;;;;;10085:31;10070:46;;10134:7;10127:14;;;9988:161;;;;:::o;12115:530::-;12207:7;12227:11;12253:5;12249:84;;;6215:1;12261:12;;12249:84;;;12285:6;12281:52;;;6257:2;12294:13;;12281:52;;;6304:1;12316:17;;12281:52;12249:84;12356:1;12349:3;:8;12345:28;;12367:6;12360:13;;;;;12345:28;12384:17;6354:5;12413:3;12404:6;:12;;;;:::i;:::-;:30;;;;:::i;:::-;12384:50;;12461:1;12449:9;:13;12445:157;;;12507:9;12481:7;:22;12497:4;12481:22;;;;;;;;;;;;;;;;:35;;;;;;;:::i;:::-;;;;;;;;12559:4;12536:40;;12545:4;12536:40;;;12566:9;12536:40;;;;;;:::i;:::-;;;;;;;;12445:157;12628:9;12619:6;:18;;;;:::i;:::-;12612:25;;;;12115:530;;;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:77::-;630:7;659:5;648:16;;593:77;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:90::-;1062:7;1105:5;1098:13;1091:21;1080:32;;1028:90;;;:::o;1124:109::-;1205:21;1220:5;1205:21;:::i;:::-;1200:3;1193:34;1124:109;;:::o;1239:210::-;1326:4;1364:2;1353:9;1349:18;1341:26;;1377:65;1439:1;1428:9;1424:17;1415:6;1377:65;:::i;:::-;1239:210;;;;:::o;1455:99::-;1507:6;1541:5;1535:12;1525:22;;1455:99;;;:::o;1560:169::-;1644:11;1678:6;1673:3;1666:19;1718:4;1713:3;1709:14;1694:29;;1560:169;;;;:::o;1735:246::-;1816:1;1826:113;1840:6;1837:1;1834:13;1826:113;;;1925:1;1920:3;1916:11;1910:18;1906:1;1901:3;1897:11;1890:39;1862:2;1859:1;1855:10;1850:15;;1826:113;;;1973:1;1964:6;1959:3;1955:16;1948:27;1797:184;1735:246;;;:::o;1987:102::-;2028:6;2079:2;2075:7;2070:2;2063:5;2059:14;2055:28;2045:38;;1987:102;;;:::o;2095:377::-;2183:3;2211:39;2244:5;2211:39;:::i;:::-;2266:71;2330:6;2325:3;2266:71;:::i;:::-;2259:78;;2346:65;2404:6;2399:3;2392:4;2385:5;2381:16;2346:65;:::i;:::-;2436:29;2458:6;2436:29;:::i;:::-;2431:3;2427:39;2420:46;;2187:285;2095:377;;;;:::o;2478:313::-;2591:4;2629:2;2618:9;2614:18;2606:26;;2678:9;2672:4;2668:20;2664:1;2653:9;2649:17;2642:47;2706:78;2779:4;2770:6;2706:78;:::i;:::-;2698:86;;2478:313;;;;:::o;2878:117::-;2987:1;2984;2977:12;3124:122;3197:24;3215:5;3197:24;:::i;:::-;3190:5;3187:35;3177:63;;3236:1;3233;3226:12;3177:63;3124:122;:::o;3252:139::-;3298:5;3336:6;3323:20;3314:29;;3352:33;3379:5;3352:33;:::i;:::-;3252:139;;;;:::o;3397:122::-;3470:24;3488:5;3470:24;:::i;:::-;3463:5;3460:35;3450:63;;3509:1;3506;3499:12;3450:63;3397:122;:::o;3525:139::-;3571:5;3609:6;3596:20;3587:29;;3625:33;3652:5;3625:33;:::i;:::-;3525:139;;;;:::o;3670:474::-;3738:6;3746;3795:2;3783:9;3774:7;3770:23;3766:32;3763:119;;;3801:79;;:::i;:::-;3763:119;3921:1;3946:53;3991:7;3982:6;3971:9;3967:22;3946:53;:::i;:::-;3936:63;;3892:117;4048:2;4074:53;4119:7;4110:6;4099:9;4095:22;4074:53;:::i;:::-;4064:63;;4019:118;3670:474;;;;;:::o;4150:116::-;4220:21;4235:5;4220:21;:::i;:::-;4213:5;4210:32;4200:60;;4256:1;4253;4246:12;4200:60;4150:116;:::o;4272:133::-;4315:5;4353:6;4340:20;4331:29;;4369:30;4393:5;4369:30;:::i;:::-;4272:133;;;;:::o;4411:468::-;4476:6;4484;4533:2;4521:9;4512:7;4508:23;4504:32;4501:119;;;4539:79;;:::i;:::-;4501:119;4659:1;4684:53;4729:7;4720:6;4709:9;4705:22;4684:53;:::i;:::-;4674:63;;4630:117;4786:2;4812:50;4854:7;4845:6;4834:9;4830:22;4812:50;:::i;:::-;4802:60;;4757:115;4411:468;;;;;:::o;4885:323::-;4941:6;4990:2;4978:9;4969:7;4965:23;4961:32;4958:119;;;4996:79;;:::i;:::-;4958:119;5116:1;5141:50;5183:7;5174:6;5163:9;5159:22;5141:50;:::i;:::-;5131:60;;5087:114;4885:323;;;;:::o;5214:619::-;5291:6;5299;5307;5356:2;5344:9;5335:7;5331:23;5327:32;5324:119;;;5362:79;;:::i;:::-;5324:119;5482:1;5507:53;5552:7;5543:6;5532:9;5528:22;5507:53;:::i;:::-;5497:63;;5453:117;5609:2;5635:53;5680:7;5671:6;5660:9;5656:22;5635:53;:::i;:::-;5625:63;;5580:118;5737:2;5763:53;5808:7;5799:6;5788:9;5784:22;5763:53;:::i;:::-;5753:63;;5708:118;5214:619;;;;;:::o;5839:329::-;5898:6;5947:2;5935:9;5926:7;5922:23;5918:32;5915:119;;;5953:79;;:::i;:::-;5915:119;6073:1;6098:53;6143:7;6134:6;6123:9;6119:22;6098:53;:::i;:::-;6088:63;;6044:117;5839:329;;;;:::o;6174:86::-;6209:7;6249:4;6242:5;6238:16;6227:27;;6174:86;;;:::o;6266:112::-;6349:22;6365:5;6349:22;:::i;:::-;6344:3;6337:35;6266:112;;:::o;6384:214::-;6473:4;6511:2;6500:9;6496:18;6488:26;;6524:67;6588:1;6577:9;6573:17;6564:6;6524:67;:::i;:::-;6384:214;;;;:::o;6604:60::-;6632:3;6653:5;6646:12;;6604:60;;;:::o;6670:142::-;6720:9;6753:53;6771:34;6780:24;6798:5;6780:24;:::i;:::-;6771:34;:::i;:::-;6753:53;:::i;:::-;6740:66;;6670:142;;;:::o;6818:126::-;6868:9;6901:37;6932:5;6901:37;:::i;:::-;6888:50;;6818:126;;;:::o;6950:143::-;7017:9;7050:37;7081:5;7050:37;:::i;:::-;7037:50;;6950:143;;;:::o;7099:165::-;7203:54;7251:5;7203:54;:::i;:::-;7198:3;7191:67;7099:165;;:::o;7270:256::-;7380:4;7418:2;7407:9;7403:18;7395:26;;7431:88;7516:1;7505:9;7501:17;7492:6;7431:88;:::i;:::-;7270:256;;;;:::o;7532:474::-;7600:6;7608;7657:2;7645:9;7636:7;7632:23;7628:32;7625:119;;;7663:79;;:::i;:::-;7625:119;7783:1;7808:53;7853:7;7844:6;7833:9;7829:22;7808:53;:::i;:::-;7798:63;;7754:117;7910:2;7936:53;7981:7;7972:6;7961:9;7957:22;7936:53;:::i;:::-;7926:63;;7881:118;7532:474;;;;;:::o;8012:180::-;8060:77;8057:1;8050:88;8157:4;8154:1;8147:15;8181:4;8178:1;8171:15;8198:180;8246:77;8243:1;8236:88;8343:4;8340:1;8333:15;8367:4;8364:1;8357:15;8384:185;8424:1;8441:20;8459:1;8441:20;:::i;:::-;8436:25;;8475:20;8493:1;8475:20;:::i;:::-;8470:25;;8514:1;8504:35;;8519:18;;:::i;:::-;8504:35;8561:1;8558;8554:9;8549:14;;8384:185;;;;:::o;8575:182::-;8715:34;8711:1;8703:6;8699:14;8692:58;8575:182;:::o;8763:366::-;8905:3;8926:67;8990:2;8985:3;8926:67;:::i;:::-;8919:74;;9002:93;9091:3;9002:93;:::i;:::-;9120:2;9115:3;9111:12;9104:19;;8763:366;;;:::o;9135:419::-;9301:4;9339:2;9328:9;9324:18;9316:26;;9388:9;9382:4;9378:20;9374:1;9363:9;9359:17;9352:47;9416:131;9542:4;9416:131;:::i;:::-;9408:139;;9135:419;;;:::o;9560:166::-;9700:18;9696:1;9688:6;9684:14;9677:42;9560:166;:::o;9732:366::-;9874:3;9895:67;9959:2;9954:3;9895:67;:::i;:::-;9888:74;;9971:93;10060:3;9971:93;:::i;:::-;10089:2;10084:3;10080:12;10073:19;;9732:366;;;:::o;10104:419::-;10270:4;10308:2;10297:9;10293:18;10285:26;;10357:9;10351:4;10347:20;10343:1;10332:9;10328:17;10321:47;10385:131;10511:4;10385:131;:::i;:::-;10377:139;;10104:419;;;:::o;10529:194::-;10569:4;10589:20;10607:1;10589:20;:::i;:::-;10584:25;;10623:20;10641:1;10623:20;:::i;:::-;10618:25;;10667:1;10664;10660:9;10652:17;;10691:1;10685:4;10682:11;10679:37;;;10696:18;;:::i;:::-;10679:37;10529:194;;;;:::o;10729:159::-;10869:11;10865:1;10857:6;10853:14;10846:35;10729:159;:::o;10894:365::-;11036:3;11057:66;11121:1;11116:3;11057:66;:::i;:::-;11050:73;;11132:93;11221:3;11132:93;:::i;:::-;11250:2;11245:3;11241:12;11234:19;;10894:365;;;:::o;11265:419::-;11431:4;11469:2;11458:9;11454:18;11446:26;;11518:9;11512:4;11508:20;11504:1;11493:9;11489:17;11482:47;11546:131;11672:4;11546:131;:::i;:::-;11538:139;;11265:419;;;:::o;11690:320::-;11805:4;11843:2;11832:9;11828:18;11820:26;;11856:71;11924:1;11913:9;11909:17;11900:6;11856:71;:::i;:::-;11937:66;11999:2;11988:9;11984:18;11975:6;11937:66;:::i;:::-;11690:320;;;;;:::o;12016:173::-;12156:25;12152:1;12144:6;12140:14;12133:49;12016:173;:::o;12195:366::-;12337:3;12358:67;12422:2;12417:3;12358:67;:::i;:::-;12351:74;;12434:93;12523:3;12434:93;:::i;:::-;12552:2;12547:3;12543:12;12536:19;;12195:366;;;:::o;12567:419::-;12733:4;12771:2;12760:9;12756:18;12748:26;;12820:9;12814:4;12810:20;12806:1;12795:9;12791:17;12784:47;12848:131;12974:4;12848:131;:::i;:::-;12840:139;;12567:419;;;:::o;12992:225::-;13132:34;13128:1;13120:6;13116:14;13109:58;13201:8;13196:2;13188:6;13184:15;13177:33;12992:225;:::o;13223:366::-;13365:3;13386:67;13450:2;13445:3;13386:67;:::i;:::-;13379:74;;13462:93;13551:3;13462:93;:::i;:::-;13580:2;13575:3;13571:12;13564:19;;13223:366;;;:::o;13595:419::-;13761:4;13799:2;13788:9;13784:18;13776:26;;13848:9;13842:4;13838:20;13834:1;13823:9;13819:17;13812:47;13876:131;14002:4;13876:131;:::i;:::-;13868:139;;13595:419;;;:::o;14020:169::-;14160:21;14156:1;14148:6;14144:14;14137:45;14020:169;:::o;14195:366::-;14337:3;14358:67;14422:2;14417:3;14358:67;:::i;:::-;14351:74;;14434:93;14523:3;14434:93;:::i;:::-;14552:2;14547:3;14543:12;14536:19;;14195:366;;;:::o;14567:419::-;14733:4;14771:2;14760:9;14756:18;14748:26;;14820:9;14814:4;14810:20;14806:1;14795:9;14791:17;14784:47;14848:131;14974:4;14848:131;:::i;:::-;14840:139;;14567:419;;;:::o;14992:222::-;15132:34;15128:1;15120:6;15116:14;15109:58;15201:5;15196:2;15188:6;15184:15;15177:30;14992:222;:::o;15220:366::-;15362:3;15383:67;15447:2;15442:3;15383:67;:::i;:::-;15376:74;;15459:93;15548:3;15459:93;:::i;:::-;15577:2;15572:3;15568:12;15561:19;;15220:366;;;:::o;15592:419::-;15758:4;15796:2;15785:9;15781:18;15773:26;;15845:9;15839:4;15835:20;15831:1;15820:9;15816:17;15809:47;15873:131;15999:4;15873:131;:::i;:::-;15865:139;;15592:419;;;:::o;16017:224::-;16157:34;16153:1;16145:6;16141:14;16134:58;16226:7;16221:2;16213:6;16209:15;16202:32;16017:224;:::o;16247:366::-;16389:3;16410:67;16474:2;16469:3;16410:67;:::i;:::-;16403:74;;16486:93;16575:3;16486:93;:::i;:::-;16604:2;16599:3;16595:12;16588:19;;16247:366;;;:::o;16619:419::-;16785:4;16823:2;16812:9;16808:18;16800:26;;16872:9;16866:4;16862:20;16858:1;16847:9;16843:17;16836:47;16900:131;17026:4;16900:131;:::i;:::-;16892:139;;16619:419;;;:::o;17044:228::-;17184:34;17180:1;17172:6;17168:14;17161:58;17253:11;17248:2;17240:6;17236:15;17229:36;17044:228;:::o;17278:366::-;17420:3;17441:67;17505:2;17500:3;17441:67;:::i;:::-;17434:74;;17517:93;17606:3;17517:93;:::i;:::-;17635:2;17630:3;17626:12;17619:19;;17278:366;;;:::o;17650:419::-;17816:4;17854:2;17843:9;17839:18;17831:26;;17903:9;17897:4;17893:20;17889:1;17878:9;17874:17;17867:47;17931:131;18057:4;17931:131;:::i;:::-;17923:139;;17650:419;;;:::o;18075:172::-;18215:24;18211:1;18203:6;18199:14;18192:48;18075:172;:::o;18253:366::-;18395:3;18416:67;18480:2;18475:3;18416:67;:::i;:::-;18409:74;;18492:93;18581:3;18492:93;:::i;:::-;18610:2;18605:3;18601:12;18594:19;;18253:366;;;:::o;18625:419::-;18791:4;18829:2;18818:9;18814:18;18806:26;;18878:9;18872:4;18868:20;18864:1;18853:9;18849:17;18842:47;18906:131;19032:4;18906:131;:::i;:::-;18898:139;;18625:419;;;:::o;19050:191::-;19090:3;19109:20;19127:1;19109:20;:::i;:::-;19104:25;;19143:20;19161:1;19143:20;:::i;:::-;19138:25;;19186:1;19183;19179:9;19172:16;;19207:3;19204:1;19201:10;19198:36;;;19214:18;;:::i;:::-;19198:36;19050:191;;;;:::o;19247:180::-;19295:77;19292:1;19285:88;19392:4;19389:1;19382:15;19416:4;19413:1;19406:15;19433:180;19481:77;19478:1;19471:88;19578:4;19575:1;19568:15;19602:4;19599:1;19592:15;19619:143;19676:5;19707:6;19701:13;19692:22;;19723:33;19750:5;19723:33;:::i;:::-;19619:143;;;;:::o;19768:351::-;19838:6;19887:2;19875:9;19866:7;19862:23;19858:32;19855:119;;;19893:79;;:::i;:::-;19855:119;20013:1;20038:64;20094:7;20085:6;20074:9;20070:22;20038:64;:::i;:::-;20028:74;;19984:128;19768:351;;;;:::o;20125:85::-;20170:7;20199:5;20188:16;;20125:85;;;:::o;20216:158::-;20274:9;20307:61;20325:42;20334:32;20360:5;20334:32;:::i;:::-;20325:42;:::i;:::-;20307:61;:::i;:::-;20294:74;;20216:158;;;:::o;20380:147::-;20475:45;20514:5;20475:45;:::i;:::-;20470:3;20463:58;20380:147;;:::o;20533:114::-;20600:6;20634:5;20628:12;20618:22;;20533:114;;;:::o;20653:184::-;20752:11;20786:6;20781:3;20774:19;20826:4;20821:3;20817:14;20802:29;;20653:184;;;;:::o;20843:132::-;20910:4;20933:3;20925:11;;20963:4;20958:3;20954:14;20946:22;;20843:132;;;:::o;20981:108::-;21058:24;21076:5;21058:24;:::i;:::-;21053:3;21046:37;20981:108;;:::o;21095:179::-;21164:10;21185:46;21227:3;21219:6;21185:46;:::i;:::-;21263:4;21258:3;21254:14;21240:28;;21095:179;;;;:::o;21280:113::-;21350:4;21382;21377:3;21373:14;21365:22;;21280:113;;;:::o;21429:732::-;21548:3;21577:54;21625:5;21577:54;:::i;:::-;21647:86;21726:6;21721:3;21647:86;:::i;:::-;21640:93;;21757:56;21807:5;21757:56;:::i;:::-;21836:7;21867:1;21852:284;21877:6;21874:1;21871:13;21852:284;;;21953:6;21947:13;21980:63;22039:3;22024:13;21980:63;:::i;:::-;21973:70;;22066:60;22119:6;22066:60;:::i;:::-;22056:70;;21912:224;21899:1;21896;21892:9;21887:14;;21852:284;;;21856:14;22152:3;22145:10;;21553:608;;;21429:732;;;;:::o;22167:831::-;22430:4;22468:3;22457:9;22453:19;22445:27;;22482:71;22550:1;22539:9;22535:17;22526:6;22482:71;:::i;:::-;22563:80;22639:2;22628:9;22624:18;22615:6;22563:80;:::i;:::-;22690:9;22684:4;22680:20;22675:2;22664:9;22660:18;22653:48;22718:108;22821:4;22812:6;22718:108;:::i;:::-;22710:116;;22836:72;22904:2;22893:9;22889:18;22880:6;22836:72;:::i;:::-;22918:73;22986:3;22975:9;22971:19;22962:6;22918:73;:::i;:::-;22167:831;;;;;;;;:::o;23004:147::-;23105:11;23142:3;23127:18;;23004:147;;;;:::o;23157:114::-;;:::o;23277:398::-;23436:3;23457:83;23538:1;23533:3;23457:83;:::i;:::-;23450:90;;23549:93;23638:3;23549:93;:::i;:::-;23667:1;23662:3;23658:11;23651:18;;23277:398;;;:::o;23681:379::-;23865:3;23887:147;24030:3;23887:147;:::i;:::-;23880:154;;24051:3;24044:10;;23681:379;;;:::o;24066:410::-;24106:7;24129:20;24147:1;24129:20;:::i;:::-;24124:25;;24163:20;24181:1;24163:20;:::i;:::-;24158:25;;24218:1;24215;24211:9;24240:30;24258:11;24240:30;:::i;:::-;24229:41;;24419:1;24410:7;24406:15;24403:1;24400:22;24380:1;24373:9;24353:83;24330:139;;24449:18;;:::i;:::-;24330:139;24114:362;24066:410;;;;:::o

Swarm Source

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