ETH Price: $2,967.30 (-1.50%)
Gas: 3 Gwei

Token

Brian Griffin (BRIAN)
 

Overview

Max Total Supply

1,000,000,000 BRIAN

Holders

116

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
2ez4me.eth
Balance
0.000000000116308273 BRIAN

Value
$0.00
0x3a4894f709544e5a3289d55c3b7f988839362712
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:
BRIAN

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-03
*/

// SPDX-License-Identifier: MIT
/**
 * https://briangriffincoin.com 
 * https://t.me/BrianGriffinCoin
 * https://twitter.com/BrianGCoin
 */
pragma solidity 0.8.19;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IFactory {
    function createPair(
        address tokenA,
        address tokenB
    ) external returns (address LPAddress);

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

interface IRouter {
    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 removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

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

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

contract BRIAN is IERC20, Ownable {
    using SafeMath for uint256;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    string private constant _name = "Brian Griffin";
    string private constant _symbol = "BRIAN";
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 1000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 100; // base 10000;
    uint256 private _maxTransferPercent = 100;
    uint256 private _maxWalletPercent = 100;
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public WLAddress;
    IRouter router;
    address public LPAddress;
    bool private tradingAllowed = false;
    uint256 private marketingFee = 3000;
    uint256 private developmentFee = 0;
    uint256 private totalFee = 0;
    uint256 private sellFee = 5000;
    uint256 private transferFee = 5000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    bool private swapping;
    uint256 private swapThreshold = (_totalSupply * 2) / 1000;

    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    address internal development_receiver;
    address internal constant marketing_receiver =
        0xbdFf803A02F7Ddb1B11B1f084B5a939F03265F2a;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _LPAddress = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        LPAddress = _LPAddress;
        totalFee = marketingFee + developmentFee;
        development_receiver = msg.sender;
        WLAddress[address(this)] = true;
        WLAddress[marketing_receiver] = true;
        WLAddress[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

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

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

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

    function LaunchToken() external onlyOwner {
        tradingAllowed = true;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

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

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

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

    function setWL(address _address, bool _enabled) external onlyOwner {
        WLAddress[_address] = _enabled;
    }

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function _maxWalletToken() public view returns (uint256) {
        return (totalSupply() * _maxWalletPercent) / denominator;
    }

    function _maxTxAmount() public view returns (uint256) {
        return (totalSupply() * _maxTxAmountPercent) / denominator;
    }

    function _maxTransferAmount() public view returns (uint256) {
        return (totalSupply() * _maxTransferPercent) / denominator;
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount);
        checkTxLimit(sender, recipient, amount);
        swapBack(sender, recipient);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function changeTaxes(
        uint256 _marketing,
        uint256 _development,
        uint256 _extraSell,
        uint256 _trans
    ) external onlyOwner {
        marketingFee = _marketing;
        developmentFee = _development;
        totalFee = _marketing + _development;
        sellFee = totalFee + _extraSell;
        transferFee = _trans;
        require(
            totalFee <= denominator && sellFee <= denominator,
            "totalFee and sellFee cannot be more than the denominator"
        );
    }

    function changeLimits(
        uint256 _newMaxTx,
        uint256 _newMaxTransfer,
        uint256 _newMaxWallet
    ) external onlyOwner {
        uint256 newTx = (totalSupply() * _newMaxTx) / 10000;
        uint256 newTransfer = (totalSupply() * _newMaxTransfer) / 10000;
        uint256 newWallet = (totalSupply() * _newMaxWallet) / 10000;
        _maxTxAmountPercent = _newMaxTx;
        _maxTransferPercent = _newMaxTransfer;
        _maxWalletPercent = _newMaxWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(
            newTx >= limit && newTransfer >= limit && newWallet >= limit,
            "Max TXs and Max Wallet cannot be less than .5%"
        );
    }

    function checkTradingAllowed(
        address sender,
        address recipient
    ) internal view {
        if (!WLAddress[sender] && !WLAddress[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function checkMaxWallet(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (
            !WLAddress[sender] &&
            !WLAddress[recipient] &&
            recipient != address(LPAddress) &&
            recipient != address(DEAD)
        ) {
            require(
                (_balances[recipient].add(amount)) <= _maxWalletToken(),
                "Exceeds maximum wallet amount."
            );
        }
    }

    function checkTxLimit(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        if (sender != LPAddress) {
            require(
                amount <= _maxTransferAmount() ||
                    WLAddress[sender] ||
                    WLAddress[recipient],
                "TX Limit Exceeded"
            );
        }
        require(
            amount <= _maxTxAmount() ||
                WLAddress[sender] ||
                WLAddress[recipient],
            "TX Limit Exceeded"
        );
    }

    function swapAndLiquify() private lockTheSwap {
        uint256 tokens = balanceOf(address(this));
        uint256 _denominator = (marketingFee.add(1).add(developmentFee));

        swapTokensForETH(tokens);
        uint256 deltaBalance = address(this).balance;
        uint256 unitBalance = deltaBalance.div(_denominator);

        uint256 marketingAmt = unitBalance.mul(marketingFee);
        if (marketingAmt > 0) {
            payable(marketing_receiver).transfer(marketingAmt);
        }
        uint256 remainingBalance = address(this).balance;
        if (remainingBalance > uint256(0)) {
            payable(development_receiver).transfer(remainingBalance);
        }
    }

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

    function shouldSwapBack(
        address sender,
        address recipient
    ) internal view returns (bool) {
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            !WLAddress[sender] &&
            recipient == LPAddress &&
            aboveThreshold;
    }

    function setSwapbackSettings(uint256 _swapThreshold) external onlyOwner {
        swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000));
    }

    function swapBack(address sender, address recipient) internal {
        if (shouldSwapBack(sender, recipient)) {
            swapAndLiquify();
        }
    }

    function shouldTakeFee(
        address sender,
        address recipient
    ) internal view returns (bool) {
        return !WLAddress[sender] && !WLAddress[recipient];
    }

    function getTotalFee(
        address sender,
        address recipient
    ) internal view returns (uint256) {
        if (recipient == LPAddress) {
            return sellFee;
        }
        if (sender == LPAddress) {
            return totalFee;
        }
        return transferFee;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(
                getTotalFee(sender, recipient)
            );
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            return amount.sub(feeAmount);
        }
        return amount;
    }

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

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"LPAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LaunchToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"WLAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxTx","type":"uint256"},{"internalType":"uint256","name":"_newMaxTransfer","type":"uint256"},{"internalType":"uint256","name":"_newMaxWallet","type":"uint256"}],"name":"changeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_extraSell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"changeTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapThreshold","type":"uint256"}],"name":"setSwapbackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setWL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620006cd565b633b9aca006200002591906200071e565b6001556064600255606460035560646004556000600960146101000a81548160ff021916908315150217905550610bb8600a556000600b556000600c55611388600d55611388600e55612710600f556001601060006101000a81548160ff0219169083151502179055506103e86002600154620000a391906200071e565b620000af919062000798565b601155348015620000bf57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000169573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200018f91906200083a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200021d91906200083a565b6040518363ffffffff1660e01b81526004016200023c9291906200087d565b6020604051808303816000875af11580156200025c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028291906200083a565b905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b54600a54620003189190620008aa565b600c8190555033601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073bdff803a02f7ddb1b11b1f084b5a939f03265f2a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620005239190620008f6565b60405180910390a3505062000913565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005c15780860481111562000599576200059862000533565b5b6001851615620005a95780820291505b8081029050620005b98562000562565b945062000579565b94509492505050565b600082620005dc5760019050620006af565b81620005ec5760009050620006af565b8160018114620006055760028114620006105762000646565b6001915050620006af565b60ff84111562000625576200062462000533565b5b8360020a9150848211156200063f576200063e62000533565b5b50620006af565b5060208310610133831016604e8410600b8410161715620006805782820a9050838111156200067a576200067962000533565b5b620006af565b6200068f84848460016200056f565b92509050818404811115620006a957620006a862000533565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620006da82620006b6565b9150620006e783620006c0565b9250620007167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005ca565b905092915050565b60006200072b82620006b6565b91506200073883620006b6565b92508282026200074881620006b6565b9150828204841483151762000762576200076162000533565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007a582620006b6565b9150620007b283620006b6565b925082620007c557620007c462000769565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200080282620007d5565b9050919050565b6200081481620007f5565b81146200082057600080fd5b50565b600081519050620008348162000809565b92915050565b600060208284031215620008535762000852620007d0565b5b6000620008638482850162000823565b91505092915050565b6200087781620007f5565b82525050565b60006040820190506200089460008301856200086c565b620008a360208301846200086c565b9392505050565b6000620008b782620006b6565b9150620008c483620006b6565b9250828201905080821115620008df57620008de62000533565b5b92915050565b620008f081620006b6565b82525050565b60006020820190506200090d6000830184620008e5565b92915050565b612f9280620009236000396000f3fe6080604052600436106101395760003560e01c806370a08231116100ab57806395d89b411161006f57806395d89b41146104375780639f7ac8a814610462578063a063d44e1461048b578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806370a082311461035057806378109e541461038d5780637d1db4a5146103b8578063893d20e8146103e35780639593a8881461040e57610140565b80631f976b7e116100fd5780631f976b7e1461024057806323b872dd1461026b5780632f54bf6e146102a8578063313ce567146102e55780634d8088021461031057806364b0fdfa1461033957610140565b806306fdde0314610145578063095ea7b314610170578063120f2eda146101ad57806318160ddd146101d8578063189ed60a1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612114565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906121cf565b610594565b6040516101a4919061222a565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612254565b60405180910390f35b3480156101e457600080fd5b506101ed6105d1565b6040516101fa919061227e565b60405180910390f35b34801561020f57600080fd5b5061022a60048036038101906102259190612299565b610612565b604051610237919061222a565b60405180910390f35b34801561024c57600080fd5b50610255610632565b604051610262919061227e565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906122c6565b61065b565b60405161029f919061222a565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612299565b610726565b6040516102dc919061222a565b60405180910390f35b3480156102f157600080fd5b506102fa61077f565b6040516103079190612335565b60405180910390f35b34801561031c57600080fd5b5061033760048036038101906103329190612350565b610788565b005b34801561034557600080fd5b5061034e6108e8565b005b34801561035c57600080fd5b5061037760048036038101906103729190612299565b61094d565b604051610384919061227e565b60405180910390f35b34801561039957600080fd5b506103a2610996565b6040516103af919061227e565b60405180910390f35b3480156103c457600080fd5b506103cd6109bf565b6040516103da919061227e565b60405180910390f35b3480156103ef57600080fd5b506103f86109e8565b6040516104059190612254565b60405180910390f35b34801561041a57600080fd5b50610435600480360381019061043091906123cf565b610a11565b005b34801561044357600080fd5b5061044c610ab4565b6040516104599190612114565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061240f565b610af1565b005b34801561049757600080fd5b506104b260048036038101906104ad919061243c565b610b6c565b005b3480156104c057600080fd5b506104db60048036038101906104d691906121cf565b610c4c565b6040516104e8919061222a565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906124a3565b610c63565b604051610525919061227e565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612521565b610cea565b005b60606040518060400160405280600d81526020017f427269616e204772696666696e00000000000000000000000000000000000000815250905090565b60006105a1338484610dac565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061060d6105e0600061094d565b6105ff6105ee61dead61094d565b600154610f7590919063ffffffff16565b610f7590919063ffffffff16565b905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600f546003546106426105d1565b61064c919061257d565b61065691906125ee565b905090565b6000610668848484610f8b565b61071b843361071685604051806060016040528060288152602001612f3560289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111799092919063ffffffff16565b610dac565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b61079133610726565b6107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c79061266b565b60405180910390fd5b6000612710846107de6105d1565b6107e8919061257d565b6107f291906125ee565b90506000612710846108026105d1565b61080c919061257d565b61081691906125ee565b90506000612710846108266105d1565b610830919061257d565b61083a91906125ee565b905085600281905550846003819055508360048190555060006108826103e861087460056108666105d1565b6111ce90919063ffffffff16565b6111e490919063ffffffff16565b90508084101580156108945750808310155b80156108a05750808210155b6108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d6906126fd565b60405180910390fd5b50505050505050565b6108f133610726565b610930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109279061266b565b60405180910390fd5b6001600960146101000a81548160ff021916908315150217905550565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600f546004546109a66105d1565b6109b0919061257d565b6109ba91906125ee565b905090565b6000600f546002546109cf6105d1565b6109d9919061257d565b6109e391906125ee565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a1a33610726565b610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a509061266b565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600581526020017f425249414e000000000000000000000000000000000000000000000000000000815250905090565b610afa33610726565b610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b309061266b565b60405180910390fd5b610b63620186a0610b55836001546111ce90919063ffffffff16565b6111e490919063ffffffff16565b60118190555050565b610b7533610726565b610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab9061266b565b60405180910390fd5b83600a8190555082600b819055508284610bce919061271d565b600c8190555081600c54610be2919061271d565b600d8190555080600e81905550600f54600c5411158015610c075750600f54600d5411155b610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d906127c3565b60405180910390fd5b50505050565b6000610c59338484610f8b565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cf333610726565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d299061266b565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610da19190612842565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e12906128cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190612961565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f68919061227e565b60405180910390a3505050565b60008183610f839190612981565b905092915050565b610f968383836111fa565b610fa0838361136b565b610fab838383611468565b610fb6838383611646565b610fc08383611885565b61101281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f7590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061106184846118a1565b61106b5781611077565b61107684848461194f565b5b90506110cb81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab690919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161116b919061227e565b60405180910390a350505050565b60008383111582906111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b89190612114565b60405180910390fd5b5082840390509392505050565b600081836111dc919061257d565b905092915050565b600081836111f291906125ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126090612a27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90612ab9565b60405180910390fd5b6000811161131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612b4b565b60405180910390fd5b6113248361094d565b811115611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90612bdd565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561140f5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561146457600960149054906101000a900460ff16611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a90612c49565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561150c5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115665750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156115a0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611641576115ad610996565b6115ff82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab690919063ffffffff16565b1115611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790612cb5565b60405180910390fd5b5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461178e576116a3610632565b811115806116fa5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061174e5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61178d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178490612d21565b60405180910390fd5b5b6117966109bf565b811115806117ed5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118415750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790612d21565b60405180910390fd5b505050565b61188f8282611acc565b1561189d5761189c611be1565b5b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119475750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008061195c8585611d75565b1115611aab5760006119946119718686611d75565b611986600f54866111e490919063ffffffff16565b6111ce90919063ffffffff16565b90506119e881600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab690919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a88919061227e565b60405180910390a3611aa38184610f7590919063ffffffff16565b915050611aaf565b8190505b9392505050565b60008183611ac4919061271d565b905092915050565b600080601154611adb3061094d565b10159050601060019054906101000a900460ff16158015611b085750601060009054906101000a900460ff165b8015611b205750600960149054906101000a900460ff165b8015611b765750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bcf5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611bd85750805b91505092915050565b6001601060016101000a81548160ff0219169083151502179055506000611c073061094d565b90506000611c35600b54611c276001600a54611ab690919063ffffffff16565b611ab690919063ffffffff16565b9050611c4082611e41565b60004790506000611c5a83836111e490919063ffffffff16565b90506000611c73600a54836111ce90919063ffffffff16565b90506000811115611cda5773bdff803a02f7ddb1b11b1f084b5a939f03265f2a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cd8573d6000803e3d6000fd5b505b60004790506000811115611d5257601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d50573d6000803e3d6000fd5b505b5050505050506000601060016101000a81548160ff021916908315150217905550565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dd657600d549050611e3b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e3557600c549050611e3b565b600e5490505b92915050565b6000600267ffffffffffffffff811115611e5e57611e5d612d41565b5b604051908082528060200260200182016040528015611e8c5781602001602082028036833780820191505090505b5090503081600081518110611ea457611ea3612d70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6f9190612db4565b81600181518110611f8357611f82612d70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fea30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610dac565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161204e959493929190612eda565b600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120be5780820151818401526020810190506120a3565b60008484015250505050565b6000601f19601f8301169050919050565b60006120e682612084565b6120f0818561208f565b93506121008185602086016120a0565b612109816120ca565b840191505092915050565b6000602082019050818103600083015261212e81846120db565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121668261213b565b9050919050565b6121768161215b565b811461218157600080fd5b50565b6000813590506121938161216d565b92915050565b6000819050919050565b6121ac81612199565b81146121b757600080fd5b50565b6000813590506121c9816121a3565b92915050565b600080604083850312156121e6576121e5612136565b5b60006121f485828601612184565b9250506020612205858286016121ba565b9150509250929050565b60008115159050919050565b6122248161220f565b82525050565b600060208201905061223f600083018461221b565b92915050565b61224e8161215b565b82525050565b60006020820190506122696000830184612245565b92915050565b61227881612199565b82525050565b6000602082019050612293600083018461226f565b92915050565b6000602082840312156122af576122ae612136565b5b60006122bd84828501612184565b91505092915050565b6000806000606084860312156122df576122de612136565b5b60006122ed86828701612184565b93505060206122fe86828701612184565b925050604061230f868287016121ba565b9150509250925092565b600060ff82169050919050565b61232f81612319565b82525050565b600060208201905061234a6000830184612326565b92915050565b60008060006060848603121561236957612368612136565b5b6000612377868287016121ba565b9350506020612388868287016121ba565b9250506040612399868287016121ba565b9150509250925092565b6123ac8161220f565b81146123b757600080fd5b50565b6000813590506123c9816123a3565b92915050565b600080604083850312156123e6576123e5612136565b5b60006123f485828601612184565b9250506020612405858286016123ba565b9150509250929050565b60006020828403121561242557612424612136565b5b6000612433848285016121ba565b91505092915050565b6000806000806080858703121561245657612455612136565b5b6000612464878288016121ba565b9450506020612475878288016121ba565b9350506040612486878288016121ba565b9250506060612497878288016121ba565b91505092959194509250565b600080604083850312156124ba576124b9612136565b5b60006124c885828601612184565b92505060206124d985828601612184565b9150509250929050565b60006124ee8261213b565b9050919050565b6124fe816124e3565b811461250957600080fd5b50565b60008135905061251b816124f5565b92915050565b60006020828403121561253757612536612136565b5b60006125458482850161250c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061258882612199565b915061259383612199565b92508282026125a181612199565b915082820484148315176125b8576125b761254e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125f982612199565b915061260483612199565b925082612614576126136125bf565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061265560068361208f565b91506126608261261f565b602082019050919050565b6000602082019050818103600083015261268481612648565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b60006126e7602e8361208f565b91506126f28261268b565b604082019050919050565b60006020820190508181036000830152612716816126da565b9050919050565b600061272882612199565b915061273383612199565b925082820190508082111561274b5761274a61254e565b5b92915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e207468652064656e6f6d696e61746f720000000000000000602082015250565b60006127ad60388361208f565b91506127b882612751565b604082019050919050565b600060208201905081810360008301526127dc816127a0565b9050919050565b6000819050919050565b60006128086128036127fe8461213b565b6127e3565b61213b565b9050919050565b600061281a826127ed565b9050919050565b600061282c8261280f565b9050919050565b61283c81612821565b82525050565b60006020820190506128576000830184612833565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128b960248361208f565b91506128c48261285d565b604082019050919050565b600060208201905081810360008301526128e8816128ac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061294b60228361208f565b9150612956826128ef565b604082019050919050565b6000602082019050818103600083015261297a8161293e565b9050919050565b600061298c82612199565b915061299783612199565b92508282039050818111156129af576129ae61254e565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a1160258361208f565b9150612a1c826129b5565b604082019050919050565b60006020820190508181036000830152612a4081612a04565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa360238361208f565b9150612aae82612a47565b604082019050919050565b60006020820190508181036000830152612ad281612a96565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b3560298361208f565b9150612b4082612ad9565b604082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612bc760318361208f565b9150612bd282612b6b565b604082019050919050565b60006020820190508181036000830152612bf681612bba565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612c33600e8361208f565b9150612c3e82612bfd565b602082019050919050565b60006020820190508181036000830152612c6281612c26565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612c9f601e8361208f565b9150612caa82612c69565b602082019050919050565b60006020820190508181036000830152612cce81612c92565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000612d0b60118361208f565b9150612d1682612cd5565b602082019050919050565b60006020820190508181036000830152612d3a81612cfe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612dae8161216d565b92915050565b600060208284031215612dca57612dc9612136565b5b6000612dd884828501612d9f565b91505092915050565b6000819050919050565b6000612e06612e01612dfc84612de1565b6127e3565b612199565b9050919050565b612e1681612deb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e518161215b565b82525050565b6000612e638383612e48565b60208301905092915050565b6000602082019050919050565b6000612e8782612e1c565b612e918185612e27565b9350612e9c83612e38565b8060005b83811015612ecd578151612eb48882612e57565b9750612ebf83612e6f565b925050600181019050612ea0565b5085935050505092915050565b600060a082019050612eef600083018861226f565b612efc6020830187612e0d565b8181036040830152612f0e8186612e7c565b9050612f1d6060830185612245565b612f2a608083018461226f565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052d7068aadd5a5bcaec484a72b2a0d7067c70f5c5ee24d4341d650310d71d7a264736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101395760003560e01c806370a08231116100ab57806395d89b411161006f57806395d89b41146104375780639f7ac8a814610462578063a063d44e1461048b578063a9059cbb146104b4578063dd62ed3e146104f1578063f2fde38b1461052e57610140565b806370a082311461035057806378109e541461038d5780637d1db4a5146103b8578063893d20e8146103e35780639593a8881461040e57610140565b80631f976b7e116100fd5780631f976b7e1461024057806323b872dd1461026b5780632f54bf6e146102a8578063313ce567146102e55780634d8088021461031057806364b0fdfa1461033957610140565b806306fdde0314610145578063095ea7b314610170578063120f2eda146101ad57806318160ddd146101d8578063189ed60a1461020357610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a610557565b6040516101679190612114565b60405180910390f35b34801561017c57600080fd5b50610197600480360381019061019291906121cf565b610594565b6040516101a4919061222a565b60405180910390f35b3480156101b957600080fd5b506101c26105ab565b6040516101cf9190612254565b60405180910390f35b3480156101e457600080fd5b506101ed6105d1565b6040516101fa919061227e565b60405180910390f35b34801561020f57600080fd5b5061022a60048036038101906102259190612299565b610612565b604051610237919061222a565b60405180910390f35b34801561024c57600080fd5b50610255610632565b604051610262919061227e565b60405180910390f35b34801561027757600080fd5b50610292600480360381019061028d91906122c6565b61065b565b60405161029f919061222a565b60405180910390f35b3480156102b457600080fd5b506102cf60048036038101906102ca9190612299565b610726565b6040516102dc919061222a565b60405180910390f35b3480156102f157600080fd5b506102fa61077f565b6040516103079190612335565b60405180910390f35b34801561031c57600080fd5b5061033760048036038101906103329190612350565b610788565b005b34801561034557600080fd5b5061034e6108e8565b005b34801561035c57600080fd5b5061037760048036038101906103729190612299565b61094d565b604051610384919061227e565b60405180910390f35b34801561039957600080fd5b506103a2610996565b6040516103af919061227e565b60405180910390f35b3480156103c457600080fd5b506103cd6109bf565b6040516103da919061227e565b60405180910390f35b3480156103ef57600080fd5b506103f86109e8565b6040516104059190612254565b60405180910390f35b34801561041a57600080fd5b50610435600480360381019061043091906123cf565b610a11565b005b34801561044357600080fd5b5061044c610ab4565b6040516104599190612114565b60405180910390f35b34801561046e57600080fd5b506104896004803603810190610484919061240f565b610af1565b005b34801561049757600080fd5b506104b260048036038101906104ad919061243c565b610b6c565b005b3480156104c057600080fd5b506104db60048036038101906104d691906121cf565b610c4c565b6040516104e8919061222a565b60405180910390f35b3480156104fd57600080fd5b50610518600480360381019061051391906124a3565b610c63565b604051610525919061227e565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190612521565b610cea565b005b60606040518060400160405280600d81526020017f427269616e204772696666696e00000000000000000000000000000000000000815250905090565b60006105a1338484610dac565b6001905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061060d6105e0600061094d565b6105ff6105ee61dead61094d565b600154610f7590919063ffffffff16565b610f7590919063ffffffff16565b905090565b60076020528060005260406000206000915054906101000a900460ff1681565b6000600f546003546106426105d1565b61064c919061257d565b61065691906125ee565b905090565b6000610668848484610f8b565b61071b843361071685604051806060016040528060288152602001612f3560289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111799092919063ffffffff16565b610dac565b600190509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b61079133610726565b6107d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c79061266b565b60405180910390fd5b6000612710846107de6105d1565b6107e8919061257d565b6107f291906125ee565b90506000612710846108026105d1565b61080c919061257d565b61081691906125ee565b90506000612710846108266105d1565b610830919061257d565b61083a91906125ee565b905085600281905550846003819055508360048190555060006108826103e861087460056108666105d1565b6111ce90919063ffffffff16565b6111e490919063ffffffff16565b90508084101580156108945750808310155b80156108a05750808210155b6108df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d6906126fd565b60405180910390fd5b50505050505050565b6108f133610726565b610930576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109279061266b565b60405180910390fd5b6001600960146101000a81548160ff021916908315150217905550565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600f546004546109a66105d1565b6109b0919061257d565b6109ba91906125ee565b905090565b6000600f546002546109cf6105d1565b6109d9919061257d565b6109e391906125ee565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610a1a33610726565b610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a509061266b565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600581526020017f425249414e000000000000000000000000000000000000000000000000000000815250905090565b610afa33610726565b610b39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b309061266b565b60405180910390fd5b610b63620186a0610b55836001546111ce90919063ffffffff16565b6111e490919063ffffffff16565b60118190555050565b610b7533610726565b610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab9061266b565b60405180910390fd5b83600a8190555082600b819055508284610bce919061271d565b600c8190555081600c54610be2919061271d565b600d8190555080600e81905550600f54600c5411158015610c075750600f54600d5411155b610c46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3d906127c3565b60405180910390fd5b50505050565b6000610c59338484610f8b565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610cf333610726565b610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d299061266b565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610da19190612842565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e12906128cf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190612961565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f68919061227e565b60405180910390a3505050565b60008183610f839190612981565b905092915050565b610f968383836111fa565b610fa0838361136b565b610fab838383611468565b610fb6838383611646565b610fc08383611885565b61101281600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610f7590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061106184846118a1565b61106b5781611077565b61107684848461194f565b5b90506110cb81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab690919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161116b919061227e565b60405180910390a350505050565b60008383111582906111c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b89190612114565b60405180910390fd5b5082840390509392505050565b600081836111dc919061257d565b905092915050565b600081836111f291906125ee565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611269576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126090612a27565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cf90612ab9565b60405180910390fd5b6000811161131b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131290612b4b565b60405180910390fd5b6113248361094d565b811115611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90612bdd565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561140f5750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561146457600960149054906101000a900460ff16611463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145a90612c49565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561150c5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156115665750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156115a0575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611641576115ad610996565b6115ff82600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab690919063ffffffff16565b1115611640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163790612cb5565b60405180910390fd5b5b505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461178e576116a3610632565b811115806116fa5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b8061174e5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61178d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178490612d21565b60405180910390fd5b5b6117966109bf565b811115806117ed5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118415750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187790612d21565b60405180910390fd5b505050565b61188f8282611acc565b1561189d5761189c611be1565b5b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119475750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008061195c8585611d75565b1115611aab5760006119946119718686611d75565b611986600f54866111e490919063ffffffff16565b6111ce90919063ffffffff16565b90506119e881600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ab690919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a88919061227e565b60405180910390a3611aa38184610f7590919063ffffffff16565b915050611aaf565b8190505b9392505050565b60008183611ac4919061271d565b905092915050565b600080601154611adb3061094d565b10159050601060019054906101000a900460ff16158015611b085750601060009054906101000a900460ff165b8015611b205750600960149054906101000a900460ff165b8015611b765750600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bcf5750600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611bd85750805b91505092915050565b6001601060016101000a81548160ff0219169083151502179055506000611c073061094d565b90506000611c35600b54611c276001600a54611ab690919063ffffffff16565b611ab690919063ffffffff16565b9050611c4082611e41565b60004790506000611c5a83836111e490919063ffffffff16565b90506000611c73600a54836111ce90919063ffffffff16565b90506000811115611cda5773bdff803a02f7ddb1b11b1f084b5a939f03265f2a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611cd8573d6000803e3d6000fd5b505b60004790506000811115611d5257601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d50573d6000803e3d6000fd5b505b5050505050506000601060016101000a81548160ff021916908315150217905550565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611dd657600d549050611e3b565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611e3557600c549050611e3b565b600e5490505b92915050565b6000600267ffffffffffffffff811115611e5e57611e5d612d41565b5b604051908082528060200260200182016040528015611e8c5781602001602082028036833780820191505090505b5090503081600081518110611ea457611ea3612d70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f6f9190612db4565b81600181518110611f8357611f82612d70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fea30600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610dac565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161204e959493929190612eda565b600060405180830381600087803b15801561206857600080fd5b505af115801561207c573d6000803e3d6000fd5b505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156120be5780820151818401526020810190506120a3565b60008484015250505050565b6000601f19601f8301169050919050565b60006120e682612084565b6120f0818561208f565b93506121008185602086016120a0565b612109816120ca565b840191505092915050565b6000602082019050818103600083015261212e81846120db565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006121668261213b565b9050919050565b6121768161215b565b811461218157600080fd5b50565b6000813590506121938161216d565b92915050565b6000819050919050565b6121ac81612199565b81146121b757600080fd5b50565b6000813590506121c9816121a3565b92915050565b600080604083850312156121e6576121e5612136565b5b60006121f485828601612184565b9250506020612205858286016121ba565b9150509250929050565b60008115159050919050565b6122248161220f565b82525050565b600060208201905061223f600083018461221b565b92915050565b61224e8161215b565b82525050565b60006020820190506122696000830184612245565b92915050565b61227881612199565b82525050565b6000602082019050612293600083018461226f565b92915050565b6000602082840312156122af576122ae612136565b5b60006122bd84828501612184565b91505092915050565b6000806000606084860312156122df576122de612136565b5b60006122ed86828701612184565b93505060206122fe86828701612184565b925050604061230f868287016121ba565b9150509250925092565b600060ff82169050919050565b61232f81612319565b82525050565b600060208201905061234a6000830184612326565b92915050565b60008060006060848603121561236957612368612136565b5b6000612377868287016121ba565b9350506020612388868287016121ba565b9250506040612399868287016121ba565b9150509250925092565b6123ac8161220f565b81146123b757600080fd5b50565b6000813590506123c9816123a3565b92915050565b600080604083850312156123e6576123e5612136565b5b60006123f485828601612184565b9250506020612405858286016123ba565b9150509250929050565b60006020828403121561242557612424612136565b5b6000612433848285016121ba565b91505092915050565b6000806000806080858703121561245657612455612136565b5b6000612464878288016121ba565b9450506020612475878288016121ba565b9350506040612486878288016121ba565b9250506060612497878288016121ba565b91505092959194509250565b600080604083850312156124ba576124b9612136565b5b60006124c885828601612184565b92505060206124d985828601612184565b9150509250929050565b60006124ee8261213b565b9050919050565b6124fe816124e3565b811461250957600080fd5b50565b60008135905061251b816124f5565b92915050565b60006020828403121561253757612536612136565b5b60006125458482850161250c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061258882612199565b915061259383612199565b92508282026125a181612199565b915082820484148315176125b8576125b761254e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006125f982612199565b915061260483612199565b925082612614576126136125bf565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b600061265560068361208f565b91506126608261261f565b602082019050919050565b6000602082019050818103600083015261268481612648565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b60006126e7602e8361208f565b91506126f28261268b565b604082019050919050565b60006020820190508181036000830152612716816126da565b9050919050565b600061272882612199565b915061273383612199565b925082820190508082111561274b5761274a61254e565b5b92915050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e207468652064656e6f6d696e61746f720000000000000000602082015250565b60006127ad60388361208f565b91506127b882612751565b604082019050919050565b600060208201905081810360008301526127dc816127a0565b9050919050565b6000819050919050565b60006128086128036127fe8461213b565b6127e3565b61213b565b9050919050565b600061281a826127ed565b9050919050565b600061282c8261280f565b9050919050565b61283c81612821565b82525050565b60006020820190506128576000830184612833565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006128b960248361208f565b91506128c48261285d565b604082019050919050565b600060208201905081810360008301526128e8816128ac565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061294b60228361208f565b9150612956826128ef565b604082019050919050565b6000602082019050818103600083015261297a8161293e565b9050919050565b600061298c82612199565b915061299783612199565b92508282039050818111156129af576129ae61254e565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612a1160258361208f565b9150612a1c826129b5565b604082019050919050565b60006020820190508181036000830152612a4081612a04565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612aa360238361208f565b9150612aae82612a47565b604082019050919050565b60006020820190508181036000830152612ad281612a96565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612b3560298361208f565b9150612b4082612ad9565b604082019050919050565b60006020820190508181036000830152612b6481612b28565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b6000612bc760318361208f565b9150612bd282612b6b565b604082019050919050565b60006020820190508181036000830152612bf681612bba565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000612c33600e8361208f565b9150612c3e82612bfd565b602082019050919050565b60006020820190508181036000830152612c6281612c26565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000612c9f601e8361208f565b9150612caa82612c69565b602082019050919050565b60006020820190508181036000830152612cce81612c92565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000612d0b60118361208f565b9150612d1682612cd5565b602082019050919050565b60006020820190508181036000830152612d3a81612cfe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612dae8161216d565b92915050565b600060208284031215612dca57612dc9612136565b5b6000612dd884828501612d9f565b91505092915050565b6000819050919050565b6000612e06612e01612dfc84612de1565b6127e3565b612199565b9050919050565b612e1681612deb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612e518161215b565b82525050565b6000612e638383612e48565b60208301905092915050565b6000602082019050919050565b6000612e8782612e1c565b612e918185612e27565b9350612e9c83612e38565b8060005b83811015612ecd578151612eb48882612e57565b9750612ebf83612e6f565b925050600181019050612ea0565b5085935050505092915050565b600060a082019050612eef600083018861226f565b612efc6020830187612e0d565b8181036040830152612f0e8186612e7c565b9050612f1d6060830185612245565b612f2a608083018461226f565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052d7068aadd5a5bcaec484a72b2a0d7067c70f5c5ee24d4341d650310d71d7a264736f6c63430008130033

Deployed Bytecode Sourcemap

5776:11546:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7885:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8977:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6490:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9169:148;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6421:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9604:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16534:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3992:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8071:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11542:714;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8162:82;;;;;;;;;;;;;:::i;:::-;;8352:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9325:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9465:131;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8252:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8853:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7976:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15150:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11003:531;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8479:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8677:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4103:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7885:83;7922:13;7955:5;;;;;;;;;;;;;;;;;7948:12;;7885:83;:::o;8977:184::-;9077:4;9094:37;9103:10;9115:7;9124:6;9094:8;:37::i;:::-;9149:4;9142:11;;8977:184;;;;:::o;6490:24::-;;;;;;;;;;;;;:::o;9169:148::-;9222:7;9249:60;9287:21;9305:1;9287:9;:21::i;:::-;9249:33;9266:15;5883:42;9266:9;:15::i;:::-;9249:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;9242:67;;9169:148;:::o;6421:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;9604:137::-;9655:7;9722:11;;9699:19;;9683:13;:11;:13::i;:::-;:35;;;;:::i;:::-;9682:51;;;;:::i;:::-;9675:58;;9604:137;:::o;16534:442::-;16666:4;16683:36;16693:6;16701:9;16712:6;16683:9;:36::i;:::-;16730:216;16753:6;16774:10;16799:136;16853:6;16799:136;;;;;;;;;;;;;;;;;:11;:19;16811:6;16799:19;;;;;;;;;;;;;;;:31;16819:10;16799:31;;;;;;;;;;;;;;;;:35;;:136;;;;;:::i;:::-;16730:8;:216::i;:::-;16964:4;16957:11;;16534:442;;;;;:::o;3992:103::-;4047:4;4082:5;;;;;;;;;;;4071:16;;:7;:16;;;4064:23;;3992:103;;;:::o;8071:83::-;8112:5;6069:2;8130:16;;8071:83;:::o;11542:714::-;3934:19;3942:10;3934:7;:19::i;:::-;3926:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11695:13:::1;11741:5;11728:9;11712:13;:11;:13::i;:::-;:25;;;;:::i;:::-;11711:35;;;;:::i;:::-;11695:51;;11757:19;11815:5;11796:15;11780:13;:11;:13::i;:::-;:31;;;;:::i;:::-;11779:41;;;;:::i;:::-;11757:63;;11831:17;11885:5;11868:13;11852;:11;:13::i;:::-;:29;;;;:::i;:::-;11851:39;;;;:::i;:::-;11831:59;;11923:9;11901:19;:31;;;;11965:15;11943:19;:37;;;;12011:13;11991:17;:33;;;;12035:13;12051:30;12076:4;12051:20;12069:1;12051:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;12035:46;;12123:5;12114;:14;;:38;;;;;12147:5;12132:11;:20;;12114:38;:60;;;;;12169:5;12156:9;:18;;12114:60;12092:156;;;;;;;;;;;;:::i;:::-;;;;;;;;;11684:572;;;;11542:714:::0;;;:::o;8162:82::-;3934:19;3942:10;3934:7;:19::i;:::-;3926:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8232:4:::1;8215:14;;:21;;;;;;;;;;;;;;;;;;8162:82::o:0;8352:119::-;8418:7;8445:9;:18;8455:7;8445:18;;;;;;;;;;;;;;;;8438:25;;8352:119;;;:::o;9325:132::-;9373:7;9438:11;;9417:17;;9401:13;:11;:13::i;:::-;:33;;;;:::i;:::-;9400:49;;;;:::i;:::-;9393:56;;9325:132;:::o;9465:131::-;9510:7;9577:11;;9554:19;;9538:13;:11;:13::i;:::-;:35;;;;:::i;:::-;9537:51;;;;:::i;:::-;9530:58;;9465:131;:::o;8252:92::-;8304:7;8331:5;;;;;;;;;;;8324:12;;8252:92;:::o;8853:116::-;3934:19;3942:10;3934:7;:19::i;:::-;3926:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8953:8:::1;8931:9;:19;8941:8;8931:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;8853:116:::0;;:::o;7976:87::-;8015:13;8048:7;;;;;;;;;;;;;;;;;8041:14;;7976:87;:::o;15150:160::-;3934:19;3942:10;3934:7;:19::i;:::-;3926:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;15249:53:::1;15294:6;15249:32;15266:14;15249:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;15233:13;:69;;;;15150:160:::0;:::o;11003:531::-;3934:19;3942:10;3934:7;:19::i;:::-;3926:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11190:10:::1;11175:12;:25;;;;11228:12;11211:14;:29;;;;11275:12;11262:10;:25;;;;:::i;:::-;11251:8;:36;;;;11319:10;11308:8;;:21;;;;:::i;:::-;11298:7;:31;;;;11354:6;11340:11;:20;;;;11405:11;;11393:8;;:23;;:49;;;;;11431:11;;11420:7;;:22;;11393:49;11371:155;;;;;;;;;;;;:::i;:::-;;;;;;;;;11003:531:::0;;;;:::o;8479:190::-;8582:4;8599:40;8609:10;8621:9;8632:6;8599:9;:40::i;:::-;8657:4;8650:11;;8479:190;;;;:::o;8677:168::-;8783:7;8810:11;:18;8822:5;8810:18;;;;;;;;;;;;;;;:27;8829:7;8810:27;;;;;;;;;;;;;;;;8803:34;;8677:168;;;;:::o;4103:136::-;3934:19;3942:10;3934:7;:19::i;:::-;3926:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;4187:3:::1;4179:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;4206:25;4227:3;4206:25;;;;;;:::i;:::-;;;;;;;;4103:136:::0;:::o;16984:335::-;17094:1;17077:19;;:5;:19;;;17069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17175:1;17156:21;;:7;:21;;;17148:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17257:6;17227:11;:18;17239:5;17227:18;;;;;;;;;;;;;;;:27;17246:7;17227:27;;;;;;;;;;;;;;;:36;;;;17295:7;17279:32;;17288:5;17279:32;;;17304:6;17279:32;;;;;;:::i;:::-;;;;;;;;16984:335;;;:::o;303:98::-;361:7;392:1;388;:5;;;;:::i;:::-;381:12;;303:98;;;;:::o;10305:690::-;10428:37;10439:6;10447:9;10458:6;10428:10;:37::i;:::-;10476:38;10496:6;10504:9;10476:19;:38::i;:::-;10525:41;10540:6;10548:9;10559:6;10525:14;:41::i;:::-;10577:39;10590:6;10598:9;10609:6;10577:12;:39::i;:::-;10627:27;10636:6;10644:9;10627:8;:27::i;:::-;10685:29;10707:6;10685:9;:17;10695:6;10685:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;10665:9;:17;10675:6;10665:17;;;;;;;;;;;;;;;:49;;;;10725:22;10750:32;10764:6;10772:9;10750:13;:32::i;:::-;:104;;10848:6;10750:104;;;10798:34;10806:6;10814:9;10825:6;10798:7;:34::i;:::-;10750:104;10725:129;;10888:40;10913:14;10888:9;:20;10898:9;10888:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10865:9;:20;10875:9;10865:20;;;;;;;;;;;;;;;:63;;;;10961:9;10944:43;;10953:6;10944:43;;;10972:14;10944:43;;;;;;:::i;:::-;;;;;;;;10417:578;10305:690;;;:::o;1968:240::-;2088:7;2146:1;2141;:6;;2149:12;2133:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2188:1;2184;:5;2177:12;;1968:240;;;;;:::o;409:98::-;467:7;498:1;494;:5;;;;:::i;:::-;487:12;;409:98;;;;:::o;515:::-;573:7;604:1;600;:5;;;;:::i;:::-;593:12;;515:98;;;;:::o;9749:548::-;9905:1;9887:20;;:6;:20;;;9879:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9989:1;9968:23;;:9;:23;;;9960:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10081:1;10064:6;:19;10042:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10195:17;10205:6;10195:9;:17::i;:::-;10185:6;:27;;10163:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;9749:548;;;:::o;12264:238::-;12383:9;:17;12393:6;12383:17;;;;;;;;;;;;;;;;;;;;;;;;;12382:18;:43;;;;;12405:9;:20;12415:9;12405:20;;;;;;;;;;;;;;;;;;;;;;;;;12404:21;12382:43;12378:117;;;12450:14;;;;;;;;;;;12442:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;12378:117;12264:238;;:::o;12510:492::-;12663:9;:17;12673:6;12663:17;;;;;;;;;;;;;;;;;;;;;;;;;12662:18;:56;;;;;12698:9;:20;12708:9;12698:20;;;;;;;;;;;;;;;;;;;;;;;;;12697:21;12662:56;:104;;;;;12756:9;;;;;;;;;;;12735:31;;:9;:31;;;;12662:104;:147;;;;;5883:42;12783:26;;:9;:26;;;;12662:147;12644:351;;;12900:17;:15;:17::i;:::-;12863:32;12888:6;12863:9;:20;12873:9;12863:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;12862:55;;12836:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;12644:351;12510:492;;;:::o;13010:568::-;13156:9;;;;;;;;;;;13146:19;;:6;:19;;;13142:248;;13218:20;:18;:20::i;:::-;13208:6;:30;;:72;;;;13263:9;:17;13273:6;13263:17;;;;;;;;;;;;;;;;;;;;;;;;;13208:72;:117;;;;13305:9;:20;13315:9;13305:20;;;;;;;;;;;;;;;;;;;;;;;;;13208:117;13182:196;;;;;;;;;;;;:::i;:::-;;;;;;;;;13142:248;13432:14;:12;:14::i;:::-;13422:6;:24;;:62;;;;13467:9;:17;13477:6;13467:17;;;;;;;;;;;;;;;;;;;;;;;;;13422:62;:103;;;;13505:9;:20;13515:9;13505:20;;;;;;;;;;;;;;;;;;;;;;;;;13422:103;13400:170;;;;;;;;;;;;:::i;:::-;;;;;;;;;13010:568;;;:::o;15318:162::-;15395:33;15410:6;15418:9;15395:14;:33::i;:::-;15391:82;;;15445:16;:14;:16::i;:::-;15391:82;15318:162;;:::o;15488:181::-;15594:4;15619:9;:17;15629:6;15619:17;;;;;;;;;;;;;;;;;;;;;;;;;15618:18;:43;;;;;15641:9;:20;15651:9;15641:20;;;;;;;;;;;;;;;;;;;;;;;;;15640:21;15618:43;15611:50;;15488:181;;;;:::o;15991:535::-;16111:7;16168:1;16135:30;16147:6;16155:9;16135:11;:30::i;:::-;:34;16131:364;;;16186:17;16206:91;16252:30;16264:6;16272:9;16252:11;:30::i;:::-;16206:23;16217:11;;16206:6;:10;;:23;;;;:::i;:::-;:27;;:91;;;;:::i;:::-;16186:111;;16339:39;16368:9;16339;:24;16357:4;16339:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;16312:9;:24;16330:4;16312:24;;;;;;;;;;;;;;;:66;;;;16423:4;16398:42;;16407:6;16398:42;;;16430:9;16398:42;;;;;;:::i;:::-;;;;;;;;16462:21;16473:9;16462:6;:10;;:21;;;;:::i;:::-;16455:28;;;;;16131:364;16512:6;16505:13;;15991:535;;;;;;:::o;197:98::-;255:7;286:1;282;:5;;;;:::i;:::-;275:12;;197:98;;;;:::o;14743:399::-;14850:4;14867:19;14917:13;;14889:24;14907:4;14889:9;:24::i;:::-;:41;;14867:63;;14962:8;;;;;;;;;;;14961:9;:37;;;;;14987:11;;;;;;;;;;;14961:37;:68;;;;;15015:14;;;;;;;;;;;14961:68;:103;;;;;15047:9;:17;15057:6;15047:17;;;;;;;;;;;;;;;;;;;;;;;;;15046:18;14961:103;:142;;;;;15094:9;;;;;;;;;;;15081:22;;:9;:22;;;14961:142;:173;;;;;15120:14;14961:173;14941:193;;;14743:399;;;;:::o;13586:697::-;6978:4;6967:8;;:15;;;;;;;;;;;;;;;;;;13643:14:::1;13660:24;13678:4;13660:9;:24::i;:::-;13643:41;;13695:20;13719:39;13743:14;;13719:19;13736:1;13719:12;;:16;;:19;;;;:::i;:::-;:23;;:39;;;;:::i;:::-;13695:64;;13772:24;13789:6;13772:16;:24::i;:::-;13807:20;13830:21;13807:44;;13862:19;13884:30;13901:12;13884;:16;;:30;;;;:::i;:::-;13862:52;;13927:20;13950:29;13966:12;;13950:11;:15;;:29;;;;:::i;:::-;13927:52;;14009:1;13994:12;:16;13990:99;;;7137:42;14027:36;;:50;14064:12;14027:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13990:99;14099:24;14126:21;14099:48;;14189:1;14162:16;:29;14158:118;;;14216:20;;;;;;;;;;;14208:38;;:56;14247:16;14208:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14158:118;13632:651;;;;;;7016:5:::0;7005:8;;:16;;;;;;;;;;;;;;;;;;13586:697::o;15677:306::-;15781:7;15818:9;;;;;;;;;;;15805:22;;:9;:22;;;15801:69;;15851:7;;15844:14;;;;15801:69;15894:9;;;;;;;;;;;15884:19;;:6;:19;;;15880:67;;15927:8;;15920:15;;;;15880:67;15964:11;;15957:18;;15677:306;;;;;:::o;14291:444::-;14357:21;14395:1;14381:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14357:40;;14426:4;14408;14413:1;14408:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14452:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14442:4;14447:1;14442:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14476:53;14493:4;14508:6;;;;;;;;;;;14517:11;14476:8;:53::i;:::-;14540:6;;;;;;;;;;;:57;;;14612:11;14638:1;14654:4;14681;14701:15;14540:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14346:389;14291:444;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:118::-;3885:24;3903:5;3885:24;:::i;:::-;3880:3;3873:37;3798:118;;:::o;3922:222::-;4015:4;4053:2;4042:9;4038:18;4030:26;;4066:71;4134:1;4123:9;4119:17;4110:6;4066:71;:::i;:::-;3922:222;;;;:::o;4150:329::-;4209:6;4258:2;4246:9;4237:7;4233:23;4229:32;4226:119;;;4264:79;;:::i;:::-;4226:119;4384:1;4409:53;4454:7;4445:6;4434:9;4430:22;4409:53;:::i;:::-;4399:63;;4355:117;4150:329;;;;:::o;4485:619::-;4562:6;4570;4578;4627:2;4615:9;4606:7;4602:23;4598:32;4595:119;;;4633:79;;:::i;:::-;4595:119;4753:1;4778:53;4823:7;4814:6;4803:9;4799:22;4778:53;:::i;:::-;4768:63;;4724:117;4880:2;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4851:118;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;4485:619;;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:619::-;5617:6;5625;5633;5682:2;5670:9;5661:7;5657:23;5653:32;5650:119;;;5688:79;;:::i;:::-;5650:119;5808:1;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5779:117;5935:2;5961:53;6006:7;5997:6;5986:9;5982:22;5961:53;:::i;:::-;5951:63;;5906:118;6063:2;6089:53;6134:7;6125:6;6114:9;6110:22;6089:53;:::i;:::-;6079:63;;6034:118;5540:619;;;;;:::o;6165:116::-;6235:21;6250:5;6235:21;:::i;:::-;6228:5;6225:32;6215:60;;6271:1;6268;6261:12;6215:60;6165:116;:::o;6287:133::-;6330:5;6368:6;6355:20;6346:29;;6384:30;6408:5;6384:30;:::i;:::-;6287:133;;;;:::o;6426:468::-;6491:6;6499;6548:2;6536:9;6527:7;6523:23;6519:32;6516:119;;;6554:79;;:::i;:::-;6516:119;6674:1;6699:53;6744:7;6735:6;6724:9;6720:22;6699:53;:::i;:::-;6689:63;;6645:117;6801:2;6827:50;6869:7;6860:6;6849:9;6845:22;6827:50;:::i;:::-;6817:60;;6772:115;6426:468;;;;;:::o;6900:329::-;6959:6;7008:2;6996:9;6987:7;6983:23;6979:32;6976:119;;;7014:79;;:::i;:::-;6976:119;7134:1;7159:53;7204:7;7195:6;7184:9;7180:22;7159:53;:::i;:::-;7149:63;;7105:117;6900:329;;;;:::o;7235:765::-;7321:6;7329;7337;7345;7394:3;7382:9;7373:7;7369:23;7365:33;7362:120;;;7401:79;;:::i;:::-;7362:120;7521:1;7546:53;7591:7;7582:6;7571:9;7567:22;7546:53;:::i;:::-;7536:63;;7492:117;7648:2;7674:53;7719:7;7710:6;7699:9;7695:22;7674:53;:::i;:::-;7664:63;;7619:118;7776:2;7802:53;7847:7;7838:6;7827:9;7823:22;7802:53;:::i;:::-;7792:63;;7747:118;7904:2;7930:53;7975:7;7966:6;7955:9;7951:22;7930:53;:::i;:::-;7920:63;;7875:118;7235:765;;;;;;;:::o;8006:474::-;8074:6;8082;8131:2;8119:9;8110:7;8106:23;8102:32;8099:119;;;8137:79;;:::i;:::-;8099:119;8257:1;8282:53;8327:7;8318:6;8307:9;8303:22;8282:53;:::i;:::-;8272:63;;8228:117;8384:2;8410:53;8455:7;8446:6;8435:9;8431:22;8410:53;:::i;:::-;8400:63;;8355:118;8006:474;;;;;:::o;8486:104::-;8531:7;8560:24;8578:5;8560:24;:::i;:::-;8549:35;;8486:104;;;:::o;8596:138::-;8677:32;8703:5;8677:32;:::i;:::-;8670:5;8667:43;8657:71;;8724:1;8721;8714:12;8657:71;8596:138;:::o;8740:155::-;8794:5;8832:6;8819:20;8810:29;;8848:41;8883:5;8848:41;:::i;:::-;8740:155;;;;:::o;8901:345::-;8968:6;9017:2;9005:9;8996:7;8992:23;8988:32;8985:119;;;9023:79;;:::i;:::-;8985:119;9143:1;9168:61;9221:7;9212:6;9201:9;9197:22;9168:61;:::i;:::-;9158:71;;9114:125;8901:345;;;;:::o;9252:180::-;9300:77;9297:1;9290:88;9397:4;9394:1;9387:15;9421:4;9418:1;9411:15;9438:410;9478:7;9501:20;9519:1;9501:20;:::i;:::-;9496:25;;9535:20;9553:1;9535:20;:::i;:::-;9530:25;;9590:1;9587;9583:9;9612:30;9630:11;9612:30;:::i;:::-;9601:41;;9791:1;9782:7;9778:15;9775:1;9772:22;9752:1;9745:9;9725:83;9702:139;;9821:18;;:::i;:::-;9702:139;9486:362;9438:410;;;;:::o;9854:180::-;9902:77;9899:1;9892:88;9999:4;9996:1;9989:15;10023:4;10020:1;10013:15;10040:185;10080:1;10097:20;10115:1;10097:20;:::i;:::-;10092:25;;10131:20;10149:1;10131:20;:::i;:::-;10126:25;;10170:1;10160:35;;10175:18;;:::i;:::-;10160:35;10217:1;10214;10210:9;10205:14;;10040:185;;;;:::o;10231:156::-;10371:8;10367:1;10359:6;10355:14;10348:32;10231:156;:::o;10393:365::-;10535:3;10556:66;10620:1;10615:3;10556:66;:::i;:::-;10549:73;;10631:93;10720:3;10631:93;:::i;:::-;10749:2;10744:3;10740:12;10733:19;;10393:365;;;:::o;10764:419::-;10930:4;10968:2;10957:9;10953:18;10945:26;;11017:9;11011:4;11007:20;11003:1;10992:9;10988:17;10981:47;11045:131;11171:4;11045:131;:::i;:::-;11037:139;;10764:419;;;:::o;11189:233::-;11329:34;11325:1;11317:6;11313:14;11306:58;11398:16;11393:2;11385:6;11381:15;11374:41;11189:233;:::o;11428:366::-;11570:3;11591:67;11655:2;11650:3;11591:67;:::i;:::-;11584:74;;11667:93;11756:3;11667:93;:::i;:::-;11785:2;11780:3;11776:12;11769:19;;11428:366;;;:::o;11800:419::-;11966:4;12004:2;11993:9;11989:18;11981:26;;12053:9;12047:4;12043:20;12039:1;12028:9;12024:17;12017:47;12081:131;12207:4;12081:131;:::i;:::-;12073:139;;11800:419;;;:::o;12225:191::-;12265:3;12284:20;12302:1;12284:20;:::i;:::-;12279:25;;12318:20;12336:1;12318:20;:::i;:::-;12313:25;;12361:1;12358;12354:9;12347:16;;12382:3;12379:1;12376:10;12373:36;;;12389:18;;:::i;:::-;12373:36;12225:191;;;;:::o;12422:243::-;12562:34;12558:1;12550:6;12546:14;12539:58;12631:26;12626:2;12618:6;12614:15;12607:51;12422:243;:::o;12671:366::-;12813:3;12834:67;12898:2;12893:3;12834:67;:::i;:::-;12827:74;;12910:93;12999:3;12910:93;:::i;:::-;13028:2;13023:3;13019:12;13012:19;;12671:366;;;:::o;13043:419::-;13209:4;13247:2;13236:9;13232:18;13224:26;;13296:9;13290:4;13286:20;13282:1;13271:9;13267:17;13260:47;13324:131;13450:4;13324:131;:::i;:::-;13316:139;;13043:419;;;:::o;13468:60::-;13496:3;13517:5;13510:12;;13468:60;;;:::o;13534:142::-;13584:9;13617:53;13635:34;13644:24;13662:5;13644:24;:::i;:::-;13635:34;:::i;:::-;13617:53;:::i;:::-;13604:66;;13534:142;;;:::o;13682:126::-;13732:9;13765:37;13796:5;13765:37;:::i;:::-;13752:50;;13682:126;;;:::o;13814:134::-;13872:9;13905:37;13936:5;13905:37;:::i;:::-;13892:50;;13814:134;;;:::o;13954:147::-;14049:45;14088:5;14049:45;:::i;:::-;14044:3;14037:58;13954:147;;:::o;14107:238::-;14208:4;14246:2;14235:9;14231:18;14223:26;;14259:79;14335:1;14324:9;14320:17;14311:6;14259:79;:::i;:::-;14107:238;;;;:::o;14351:223::-;14491:34;14487:1;14479:6;14475:14;14468:58;14560:6;14555:2;14547:6;14543:15;14536:31;14351:223;:::o;14580:366::-;14722:3;14743:67;14807:2;14802:3;14743:67;:::i;:::-;14736:74;;14819:93;14908:3;14819:93;:::i;:::-;14937:2;14932:3;14928:12;14921:19;;14580:366;;;:::o;14952:419::-;15118:4;15156:2;15145:9;15141:18;15133:26;;15205:9;15199:4;15195:20;15191:1;15180:9;15176:17;15169:47;15233:131;15359:4;15233:131;:::i;:::-;15225:139;;14952:419;;;:::o;15377:221::-;15517:34;15513:1;15505:6;15501:14;15494:58;15586:4;15581:2;15573:6;15569:15;15562:29;15377:221;:::o;15604:366::-;15746:3;15767:67;15831:2;15826:3;15767:67;:::i;:::-;15760:74;;15843:93;15932:3;15843:93;:::i;:::-;15961:2;15956:3;15952:12;15945:19;;15604:366;;;:::o;15976:419::-;16142:4;16180:2;16169:9;16165:18;16157:26;;16229:9;16223:4;16219:20;16215:1;16204:9;16200:17;16193:47;16257:131;16383:4;16257:131;:::i;:::-;16249:139;;15976:419;;;:::o;16401:194::-;16441:4;16461:20;16479:1;16461:20;:::i;:::-;16456:25;;16495:20;16513:1;16495:20;:::i;:::-;16490:25;;16539:1;16536;16532:9;16524:17;;16563:1;16557:4;16554:11;16551:37;;;16568:18;;:::i;:::-;16551:37;16401:194;;;;:::o;16601:224::-;16741:34;16737:1;16729:6;16725:14;16718:58;16810:7;16805:2;16797:6;16793:15;16786:32;16601:224;:::o;16831:366::-;16973:3;16994:67;17058:2;17053:3;16994:67;:::i;:::-;16987:74;;17070:93;17159:3;17070:93;:::i;:::-;17188:2;17183:3;17179:12;17172:19;;16831:366;;;:::o;17203:419::-;17369:4;17407:2;17396:9;17392:18;17384:26;;17456:9;17450:4;17446:20;17442:1;17431:9;17427:17;17420:47;17484:131;17610:4;17484:131;:::i;:::-;17476:139;;17203:419;;;:::o;17628:222::-;17768:34;17764:1;17756:6;17752:14;17745:58;17837:5;17832:2;17824:6;17820:15;17813:30;17628:222;:::o;17856:366::-;17998:3;18019:67;18083:2;18078:3;18019:67;:::i;:::-;18012:74;;18095:93;18184:3;18095:93;:::i;:::-;18213:2;18208:3;18204:12;18197:19;;17856:366;;;:::o;18228:419::-;18394:4;18432:2;18421:9;18417:18;18409:26;;18481:9;18475:4;18471:20;18467:1;18456:9;18452:17;18445:47;18509:131;18635:4;18509:131;:::i;:::-;18501:139;;18228:419;;;:::o;18653:228::-;18793:34;18789:1;18781:6;18777:14;18770:58;18862:11;18857:2;18849:6;18845:15;18838:36;18653:228;:::o;18887:366::-;19029:3;19050:67;19114:2;19109:3;19050:67;:::i;:::-;19043:74;;19126:93;19215:3;19126:93;:::i;:::-;19244:2;19239:3;19235:12;19228:19;;18887:366;;;:::o;19259:419::-;19425:4;19463:2;19452:9;19448:18;19440:26;;19512:9;19506:4;19502:20;19498:1;19487:9;19483:17;19476:47;19540:131;19666:4;19540:131;:::i;:::-;19532:139;;19259:419;;;:::o;19684:236::-;19824:34;19820:1;19812:6;19808:14;19801:58;19893:19;19888:2;19880:6;19876:15;19869:44;19684:236;:::o;19926:366::-;20068:3;20089:67;20153:2;20148:3;20089:67;:::i;:::-;20082:74;;20165:93;20254:3;20165:93;:::i;:::-;20283:2;20278:3;20274:12;20267:19;;19926:366;;;:::o;20298:419::-;20464:4;20502:2;20491:9;20487:18;20479:26;;20551:9;20545:4;20541:20;20537:1;20526:9;20522:17;20515:47;20579:131;20705:4;20579:131;:::i;:::-;20571:139;;20298:419;;;:::o;20723:164::-;20863:16;20859:1;20851:6;20847:14;20840:40;20723:164;:::o;20893:366::-;21035:3;21056:67;21120:2;21115:3;21056:67;:::i;:::-;21049:74;;21132:93;21221:3;21132:93;:::i;:::-;21250:2;21245:3;21241:12;21234:19;;20893:366;;;:::o;21265:419::-;21431:4;21469:2;21458:9;21454:18;21446:26;;21518:9;21512:4;21508:20;21504:1;21493:9;21489:17;21482:47;21546:131;21672:4;21546:131;:::i;:::-;21538:139;;21265:419;;;:::o;21690:180::-;21830:32;21826:1;21818:6;21814:14;21807:56;21690:180;:::o;21876:366::-;22018:3;22039:67;22103:2;22098:3;22039:67;:::i;:::-;22032:74;;22115:93;22204:3;22115:93;:::i;:::-;22233:2;22228:3;22224:12;22217:19;;21876:366;;;:::o;22248:419::-;22414:4;22452:2;22441:9;22437:18;22429:26;;22501:9;22495:4;22491:20;22487:1;22476:9;22472:17;22465:47;22529:131;22655:4;22529:131;:::i;:::-;22521:139;;22248:419;;;:::o;22673:167::-;22813:19;22809:1;22801:6;22797:14;22790:43;22673:167;:::o;22846:366::-;22988:3;23009:67;23073:2;23068:3;23009:67;:::i;:::-;23002:74;;23085:93;23174:3;23085:93;:::i;:::-;23203:2;23198:3;23194:12;23187:19;;22846:366;;;:::o;23218:419::-;23384:4;23422:2;23411:9;23407:18;23399:26;;23471:9;23465:4;23461:20;23457:1;23446:9;23442:17;23435:47;23499:131;23625:4;23499:131;:::i;:::-;23491:139;;23218:419;;;:::o;23643:180::-;23691:77;23688:1;23681:88;23788:4;23785:1;23778:15;23812:4;23809:1;23802:15;23829:180;23877:77;23874:1;23867:88;23974:4;23971:1;23964:15;23998:4;23995:1;23988:15;24015:143;24072:5;24103:6;24097:13;24088:22;;24119:33;24146:5;24119:33;:::i;:::-;24015:143;;;;:::o;24164:351::-;24234:6;24283:2;24271:9;24262:7;24258:23;24254:32;24251:119;;;24289:79;;:::i;:::-;24251:119;24409:1;24434:64;24490:7;24481:6;24470:9;24466:22;24434:64;:::i;:::-;24424:74;;24380:128;24164:351;;;;:::o;24521:85::-;24566:7;24595:5;24584:16;;24521:85;;;:::o;24612:158::-;24670:9;24703:61;24721:42;24730:32;24756:5;24730:32;:::i;:::-;24721:42;:::i;:::-;24703:61;:::i;:::-;24690:74;;24612:158;;;:::o;24776:147::-;24871:45;24910:5;24871:45;:::i;:::-;24866:3;24859:58;24776:147;;:::o;24929:114::-;24996:6;25030:5;25024:12;25014:22;;24929:114;;;:::o;25049:184::-;25148:11;25182:6;25177:3;25170:19;25222:4;25217:3;25213:14;25198:29;;25049:184;;;;:::o;25239:132::-;25306:4;25329:3;25321:11;;25359:4;25354:3;25350:14;25342:22;;25239:132;;;:::o;25377:108::-;25454:24;25472:5;25454:24;:::i;:::-;25449:3;25442:37;25377:108;;:::o;25491:179::-;25560:10;25581:46;25623:3;25615:6;25581:46;:::i;:::-;25659:4;25654:3;25650:14;25636:28;;25491:179;;;;:::o;25676:113::-;25746:4;25778;25773:3;25769:14;25761:22;;25676:113;;;:::o;25825:732::-;25944:3;25973:54;26021:5;25973:54;:::i;:::-;26043:86;26122:6;26117:3;26043:86;:::i;:::-;26036:93;;26153:56;26203:5;26153:56;:::i;:::-;26232:7;26263:1;26248:284;26273:6;26270:1;26267:13;26248:284;;;26349:6;26343:13;26376:63;26435:3;26420:13;26376:63;:::i;:::-;26369:70;;26462:60;26515:6;26462:60;:::i;:::-;26452:70;;26308:224;26295:1;26292;26288:9;26283:14;;26248:284;;;26252:14;26548:3;26541:10;;25949:608;;;25825:732;;;;:::o;26563:831::-;26826:4;26864:3;26853:9;26849:19;26841:27;;26878:71;26946:1;26935:9;26931:17;26922:6;26878:71;:::i;:::-;26959:80;27035:2;27024:9;27020:18;27011:6;26959:80;:::i;:::-;27086:9;27080:4;27076:20;27071:2;27060:9;27056:18;27049:48;27114:108;27217:4;27208:6;27114:108;:::i;:::-;27106:116;;27232:72;27300:2;27289:9;27285:18;27276:6;27232:72;:::i;:::-;27314:73;27382:3;27371:9;27367:19;27358:6;27314:73;:::i;:::-;26563:831;;;;;;;;:::o

Swarm Source

ipfs://52d7068aadd5a5bcaec484a72b2a0d7067c70f5c5ee24d4341d650310d71d7a2
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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