ETH Price: $3,808.18 (+5.38%)

Token

ERC-20: Yamanote-Sen (YMNT)
 

Overview

Max Total Supply

137,000,000 YMNT

Holders

1,687

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
400 YMNT

Value
$0.00
0xdc9c8efc81fa3d675353b2b5ef21f42bca2b08f4
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:
YamanoteSen

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-02-23
*/

/**

              YAMANOTE-SEN
                 /#@@@&/                
             ///////////////            
       @.@@@@@@@@%%%%%%%@@@@@@@%./      
       @.&&%%&&&&&&&&&&&%%%%%%&@./      
       @.%/&&&/%&&&&&&&(#%%#%/%&./      
       @.%/&&&/%&&&&&&&(#%&&&(%&./      
       @.#(&@@%&@@@@&&&&&&&&&&&@./      
       @.//////////////////,,,/,./      
       @..                     ../      
        ..**,**.         ****** *       
        ..        @@@@*        .*       
         /@@/&  @@@@@@@@@  @/@@/        
         .                     ,  

    Yamanote-sen inspired by the most famous train in Japan, the Yamanote Line. 
    This train is known to pass through the last megalopolis of Tokyo, covering a vast expanse 
    that includes Saitama, Kanagawa, and Chiba. Similarly, Yamanote-sen is designed to 
    cover a broad range of Japanese meme tokens, bringing them together under one umbrella. 
 
    Telegram: https://t.me/YMNTofficial
    Website: https://www.yamanote-sen.io
 
    Circulating Supply: 137.000.000 $YMNT
    Maximum Wallet: 4.110.000 $YMNT
    Slippage: 2-3%
    Transaction Tax: 2% / 1% LP - 1% YamanoteFund

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.17;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IUniswapV2Router {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

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

contract Ownable {
    address private _owner;

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }
    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

contract YamanoteSen is IERC20, Ownable {       
    string private constant _name = "Yamanote-Sen";
    string private constant _symbol = "YMNT";
    uint8 private constant _decimals = 9;
    uint256 private constant _totalSupply = 137_000_000 * 10**_decimals;

    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _blocked;

    mapping (address => uint256) private _lastTradeBlock;
    mapping (address => bool) private isContractExempt;
    uint256 private tradeCooldown = 1;
    
    uint256 public constant maxWalletAmount = 4_110_000 * 10**_decimals;
    uint256 private constant contractSwapLimit = 411_000 * 10**_decimals;
    uint256 private constant contractSwapMax = 2_740_000 * 10**_decimals;

    struct TradingFees{
        uint256 buyTax;
        uint256 sellTax;
    }  

    TradingFees public tradingFees = TradingFees(7,45);
    uint256 public constant sniperTax = 49;

    IUniswapV2Router private constant uniswapRouter = IUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private immutable ETH = uniswapRouter.WETH();
    address private immutable uniswapPair;

    address payable private immutable deployerAddress = payable(msg.sender);
    address payable private constant YamanoteFund = payable(0x2133352095925E76968d3a6890Ea874CbcDcf314);

    bool private tradingOpen = false;
    bool private swapping = false;
    bool private antiMEV = false;
    uint256 private startingBlock;
    uint private preLaunch;

    modifier swapLock {
        swapping = true;
        _;
        swapping = false;
    }

    modifier tradingLock(address sender) {
        require(tradingOpen || sender == deployerAddress || sender == YamanoteFund);
        _;
    }

    constructor () {
        uniswapPair = IUniswapV2Factory(uniswapRouter.factory()).createPair(address(this), ETH);
        isContractExempt[address(this)] = 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 totalSupply() public pure returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) {
        require(_allowances[sender][msg.sender] >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        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);
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Token: transfer amount must be greater than zero");

        _balances[from] -= amount;

        if (from != address(this) && from != YamanoteFund && to != YamanoteFund && to != deployerAddress) {
            
            if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
                address human = ensureOneHuman(from, to);
                ensureMaxTxFrequency(human);
                _lastTradeBlock[human] = block.number;
            }

            if (from == uniswapPair && to != address(uniswapRouter)) {
                require(balanceOf(to) + amount <= maxWalletAmount, "Token: transfer implies violation of max wallet");
            }

           uint256 contractTokenBalance = balanceOf(address(this));
           if (shouldSwapback(from, contractTokenBalance)) 
               swapback(contractTokenBalance);                            

           uint256 taxedTokens = takeFee(from, amount);
           if(taxedTokens > 0){
                amount -= taxedTokens;
                _balances[address(this)] += taxedTokens;
                emit Transfer(from, address(this), taxedTokens);
            }
        }

        _balances[to] += amount;
        emit Transfer(from, to, amount);
    }

    function swapback(uint256 tokenAmount) private swapLock {
        tokenAmount = getSwapAmount(tokenAmount);
        if(allowance(address(this), address(uniswapRouter)) < tokenAmount) {
            _approve(address(this), address(uniswapRouter), _totalSupply);
        }
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = ETH;
        uniswapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        uint256 contractETHBalance = address(this).balance;
        if(contractETHBalance > 0) {
            YamanoteFund.transfer(contractETHBalance);
        }
    }

    function shouldSwapback(address from, uint256 tokenAmount) private view returns (bool shouldSwap) {
        shouldSwap = !swapping && from != uniswapPair && tokenAmount > contractSwapLimit && 1 + startingBlock <= block.number;
    }

    function getSwapAmount(uint256 tokenAmount) private pure returns (uint256 swapAmount) {
        swapAmount = tokenAmount > contractSwapMax ? contractSwapMax : contractSwapLimit;
    }

    function takeFee(address from, uint256 amount) private view returns (uint256 feeAmount) {
         if(_blocked[from] || block.number <= startingBlock)
                feeAmount = amount * sniperTax / 100;
        else
            feeAmount = amount * (startingBlock == 0 ? 25 : (from == uniswapPair ? tradingFees.buyTax : tradingFees.sellTax)) / 100;
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == deployerAddress);
        antiMEV = toggle;
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == deployerAddress);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;
    }

    function manualSwapback(uint256 percent) external {
        require(msg.sender == deployerAddress);
        require(0 < percent && percent <= 100, "Token: only percent values in range (0,100] permissible");
        uint256 tokensToSwap = percent * balanceOf(address(this)) / 100;
        swapback(tokensToSwap);
    }

    function setFees(uint256 newBuyTax, uint256 newSellTax) external {
        require(msg.sender == deployerAddress);
        require(newBuyTax <= tradingFees.buyTax, "Token: only fee reduction permitted");
        require(newSellTax <= tradingFees.sellTax, "Token: only fee reduction permitted");
        tradingFees.buyTax = newBuyTax;
        tradingFees.sellTax = newSellTax;
    }

    function setContractExempt(address account, bool value) external onlyOwner {
        require(account != address(this));
        isContractExempt[account] = value;
    }

    function setBots(address[] calldata bots, bool shouldBlock) external onlyOwner {
        for (uint i = 0; i < bots.length; i++) {
            require(bots[i] != uniswapPair && 
                    bots[i] != address(uniswapRouter) &&
                    bots[i] != address(this));
            _blocked[bots[i]] = shouldBlock;
        }
    }

    function initialize() external onlyOwner {
        require(preLaunch++<2);
    }

    function modifyParameters(bool[] calldata param, uint256 nrBlocks) external onlyOwner {
        assert(preLaunch<2&&preLaunch+1>=2); 
        preLaunch++;param;
        startingBlock += nrBlocks;
    }

    function openTrading() external onlyOwner {
        require(preLaunch == 2 && !tradingOpen, "Token: trading already open");
        startingBlock += block.number;
        tradingOpen = true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool[]","name":"param","type":"bool[]"},{"internalType":"uint256","name":"nrBlocks","type":"uint256"}],"name":"modifyParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots","type":"address[]"},{"internalType":"bool","name":"shouldBlock","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sniperTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyTax","type":"uint256"},{"internalType":"uint256","name":"sellTax","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"},{"stateMutability":"payable","type":"receive"}]

60e06040526001600655604051806040016040528060078152602001602d815250600760008201518160000155602082015181600101555050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000098573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000be919062000514565b73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152503373ffffffffffffffffffffffffffffffffffffffff1660c09073ffffffffffffffffffffffffffffffffffffffff168152506000600960006101000a81548160ff0219169083151502179055506000600960016101000a81548160ff0219169083151502179055506000600960026101000a81548160ff0219169083151502179055503480156200018157600080fd5b506000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000283573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a9919062000514565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396306080516040518363ffffffff1660e01b8152600401620002e792919062000557565b6020604051808303816000875af115801562000307573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200032d919062000514565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506009600a620003c891906200071e565b63082a7440620003d991906200076f565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200047c91906200071e565b63082a74406200048d91906200076f565b6040516200049c9190620007cb565b60405180910390a3620007e8565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004dc82620004af565b9050919050565b620004ee81620004cf565b8114620004fa57600080fd5b50565b6000815190506200050e81620004e3565b92915050565b6000602082840312156200052d576200052c620004aa565b5b60006200053d84828501620004fd565b91505092915050565b6200055181620004cf565b82525050565b60006040820190506200056e600083018562000546565b6200057d602083018462000546565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200061257808604811115620005ea57620005e962000584565b5b6001851615620005fa5780820291505b80810290506200060a85620005b3565b9450620005ca565b94509492505050565b6000826200062d576001905062000700565b816200063d576000905062000700565b8160018114620006565760028114620006615762000697565b600191505062000700565b60ff84111562000676576200067562000584565b5b8360020a91508482111562000690576200068f62000584565b5b5062000700565b5060208310610133831016604e8410600b8410161715620006d15782820a905083811115620006cb57620006ca62000584565b5b62000700565b620006e08484846001620005c0565b92509050818404811115620006fa57620006f962000584565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200072b8262000707565b9150620007388362000711565b9250620007677fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200061b565b905092915050565b60006200077c8262000707565b9150620007898362000707565b9250828202620007998162000707565b91508282048414831517620007b357620007b262000584565b5b5092915050565b620007c58162000707565b82525050565b6000602082019050620007e26000830184620007ba565b92915050565b60805160a05160c05161346d620008506000396000818161059401528181610609015281816108960152818161128c01528181611545015261182e015260008181610dcd015281816119a201528181612070015261219601526000611da3015261346d6000f3fe6080604052600436106101445760003560e01c80638129fc1c116100b6578063aa4bde281161006f578063aa4bde2814610442578063c9567bf91461046d578063dd62ed3e14610484578063f1f5cd91146104c1578063f318bbfe146104ec578063f8d982b2146105155761014b565b80638129fc1c146103465780638da5cb5b1461035d57806395d89b41146103885780639686d322146103b35780639c0db5f3146103dc578063a9059cbb146104055761014b565b806323b872dd1161010857806323b872dd146102355780633049b58014610272578063313ce5671461029b57806370a08231146102c6578063715018a614610303578063743781321461031a5761014b565b806306fdde0314610150578063095ea7b31461017b57806309fb5639146101b85780630b78f9c0146101e157806318160ddd1461020a5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561053e565b604051610172919061232b565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906123eb565b61057b565b6040516101af9190612446565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da919061248d565b610592565b005b3480156101ed57600080fd5b50610208600480360381019061020391906124ba565b610607565b005b34801561021657600080fd5b5061021f610707565b60405161022c9190612509565b60405180910390f35b34801561024157600080fd5b5061025c60048036038101906102579190612524565b61072b565b6040516102699190612446565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190612577565b610894565b005b3480156102a757600080fd5b506102b0610945565b6040516102bd91906125c0565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906125db565b61094e565b6040516102fa9190612509565b60405180910390f35b34801561030f57600080fd5b50610318610997565b005b34801561032657600080fd5b5061032f610ae3565b60405161033d929190612608565b60405180910390f35b34801561035257600080fd5b5061035b610af5565b005b34801561036957600080fd5b50610372610ba8565b60405161037f9190612640565b60405180910390f35b34801561039457600080fd5b5061039d610bd1565b6040516103aa919061232b565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d5919061265b565b610c0e565b005b3480156103e857600080fd5b5061040360048036038101906103fe9190612700565b610d2f565b005b34801561041157600080fd5b5061042c600480360381019061042791906123eb565b610fb4565b6040516104399190612446565b60405180910390f35b34801561044e57600080fd5b50610457610fcb565b6040516104649190612509565b60405180910390f35b34801561047957600080fd5b50610482610fea565b005b34801561049057600080fd5b506104ab60048036038101906104a69190612760565b61110c565b6040516104b89190612509565b60405180910390f35b3480156104cd57600080fd5b506104d6611193565b6040516104e39190612509565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906127f6565b611198565b005b34801561052157600080fd5b5061053c60048036038101906105379190612577565b61128a565b005b60606040518060400160405280600c81526020017f59616d616e6f74652d53656e0000000000000000000000000000000000000000815250905090565b6000610588338484611363565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ea57600080fd5b80600960026101000a81548160ff02191690831515021790555050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065f57600080fd5b6007600001548211156106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e906128c8565b60405180910390fd5b6007600101548111156106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e6906128c8565b60405180910390fd5b81600760000181905550806007600101819055505050565b60006009600a6107179190612a4a565b63082a74406107269190612a95565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390612b49565b60405180910390fd5b61087e843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108799190612b69565b611363565b61088984848461152c565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ec57600080fd5b6000811180156108fc5750600481105b61093b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093290612c0f565b60405180910390fd5b8060068190555050565b60006009905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90612c7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60078060000154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a90612c7b565b60405180910390fd5b6002600b6000815480929190610b9890612c9b565b9190505510610ba657600080fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f594d4e5400000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390612c7b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cd457600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490612c7b565b60405180910390fd5b60005b83839050811015610fae577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16848483818110610e1557610e14612ce3565b5b9050602002016020810190610e2a91906125db565b73ffffffffffffffffffffffffffffffffffffffff1614158015610eb55750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16848483818110610e8757610e86612ce3565b5b9050602002016020810190610e9c91906125db565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f1457503073ffffffffffffffffffffffffffffffffffffffff16848483818110610ee657610ee5612ce3565b5b9050602002016020810190610efb91906125db565b73ffffffffffffffffffffffffffffffffffffffff1614155b610f1d57600080fd5b8160036000868685818110610f3557610f34612ce3565b5b9050602002016020810190610f4a91906125db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fa690612c9b565b915050610dc0565b50505050565b6000610fc133848461152c565b6001905092915050565b6009600a610fd99190612a4a565b623eb6b0610fe79190612a95565b81565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f90612c7b565b60405180910390fd5b6002600b541480156110975750600960009054906101000a900460ff16155b6110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90612d5e565b60405180910390fd5b43600a60008282546110e89190612d7e565b925050819055506001600960006101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b603181565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90612c7b565b60405180910390fd5b6002600b54108015611247575060026001600b546112449190612d7e565b10155b61125457611253612db2565b5b600b600081548092919061126790612c9b565b919050555080600a600082825461127e9190612d7e565b92505081905550505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112e257600080fd5b8060001080156112f3575060648111155b611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990612e53565b60405180910390fd5b6000606461133f3061094e565b8361134a9190612a95565b6113549190612ea2565b905061135f81611c7d565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990612f45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890612fd7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161151f9190612509565b60405180910390a3505050565b82600960009054906101000a900460ff168061159357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806115dd5750732133352095925e76968d3a6890ea874cbcdcf31473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6115e657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90613069565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb906130fb565b60405180910390fd5b60008211611707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fe9061318d565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117569190612b69565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117d95750732133352095925e76968d3a6890ea874cbcdcf31473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118255750732133352095925e76968d3a6890ea874cbcdcf31473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561187d57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bbc57600960029054906101000a900460ff1680156118e85750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561193e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119a057600061194f8585611f22565b905061195a81611f68565b43600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a3b5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ab2576009600a611a4e9190612a4a565b623eb6b0611a5c9190612a95565b82611a668561094e565b611a709190612d7e565b1115611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa89061321f565b60405180910390fd5b5b6000611abd3061094e565b9050611ac98582612054565b15611ad857611ad781611c7d565b5b6000611ae48685612107565b90506000811115611bb9578084611afb9190612b69565b935080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4c9190612d7e565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb09190612509565b60405180910390a35b50505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0b9190612d7e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c6f9190612509565b60405180910390a350505050565b6001600960016101000a81548160ff021916908315150217905550611ca18161221f565b905080611cc230737a250d5630b4cf539739df2c5dacb4c659f2488d61110c565b1015611d0457611d0330737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a611cef9190612a4a565b63082a7440611cfe9190612a95565b611363565b5b6000600267ffffffffffffffff811115611d2157611d2061323f565b5b604051908082528060200260200182016040528015611d4f5781602001602082028036833780820191505090505b5090503081600081518110611d6757611d66612ce3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611dd657611dd5612ce3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e66959493929190613371565b600060405180830381600087803b158015611e8057600080fd5b505af1158015611e94573d6000803e3d6000fd5b5050505060004790506000811115611f0257732133352095925e76968d3a6890ea874cbcdcf31473ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f00573d6000803e3d6000fd5b505b50506000600960016101000a81548160ff02191690831515021790555050565b6000611f2d83612288565b1580611f3f5750611f3d82612288565b155b611f4857600080fd5b611f5183612288565b15611f5e57819050611f62565b8290505b92915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061200e5750600143611fbf9190612d7e565b600654600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200c9190612d7e565b105b905080612050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204790613417565b60405180910390fd5b5050565b6000600960019054906101000a900460ff161580156120bf57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e557506009600a6120d49190612a4a565b620645786120e29190612a95565b82115b80156120ff575043600a5460016120fc9190612d7e565b11155b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121635750600a544311155b156121885760646031836121779190612a95565b6121819190612ea2565b9050612219565b60646000600a54146121fe577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146121f2576007600101546121f9565b6007600001545b612201565b60195b8361220c9190612a95565b6122169190612ea2565b90505b92915050565b60006009600a61222f9190612a4a565b6229cf2061223d9190612a95565b8211612264576009600a6122519190612a4a565b6206457861225f9190612a95565b612281565b6009600a6122729190612a4a565b6229cf206122809190612a95565b5b9050919050565b600080823b905060008111915050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122d55780820151818401526020810190506122ba565b60008484015250505050565b6000601f19601f8301169050919050565b60006122fd8261229b565b61230781856122a6565b93506123178185602086016122b7565b612320816122e1565b840191505092915050565b6000602082019050818103600083015261234581846122f2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061238282612357565b9050919050565b61239281612377565b811461239d57600080fd5b50565b6000813590506123af81612389565b92915050565b6000819050919050565b6123c8816123b5565b81146123d357600080fd5b50565b6000813590506123e5816123bf565b92915050565b600080604083850312156124025761240161234d565b5b6000612410858286016123a0565b9250506020612421858286016123d6565b9150509250929050565b60008115159050919050565b6124408161242b565b82525050565b600060208201905061245b6000830184612437565b92915050565b61246a8161242b565b811461247557600080fd5b50565b60008135905061248781612461565b92915050565b6000602082840312156124a3576124a261234d565b5b60006124b184828501612478565b91505092915050565b600080604083850312156124d1576124d061234d565b5b60006124df858286016123d6565b92505060206124f0858286016123d6565b9150509250929050565b612503816123b5565b82525050565b600060208201905061251e60008301846124fa565b92915050565b60008060006060848603121561253d5761253c61234d565b5b600061254b868287016123a0565b935050602061255c868287016123a0565b925050604061256d868287016123d6565b9150509250925092565b60006020828403121561258d5761258c61234d565b5b600061259b848285016123d6565b91505092915050565b600060ff82169050919050565b6125ba816125a4565b82525050565b60006020820190506125d560008301846125b1565b92915050565b6000602082840312156125f1576125f061234d565b5b60006125ff848285016123a0565b91505092915050565b600060408201905061261d60008301856124fa565b61262a60208301846124fa565b9392505050565b61263a81612377565b82525050565b60006020820190506126556000830184612631565b92915050565b600080604083850312156126725761267161234d565b5b6000612680858286016123a0565b925050602061269185828601612478565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126c0576126bf61269b565b5b8235905067ffffffffffffffff8111156126dd576126dc6126a0565b5b6020830191508360208202830111156126f9576126f86126a5565b5b9250929050565b6000806000604084860312156127195761271861234d565b5b600084013567ffffffffffffffff81111561273757612736612352565b5b612743868287016126aa565b9350935050602061275686828701612478565b9150509250925092565b600080604083850312156127775761277661234d565b5b6000612785858286016123a0565b9250506020612796858286016123a0565b9150509250929050565b60008083601f8401126127b6576127b561269b565b5b8235905067ffffffffffffffff8111156127d3576127d26126a0565b5b6020830191508360208202830111156127ef576127ee6126a5565b5b9250929050565b60008060006040848603121561280f5761280e61234d565b5b600084013567ffffffffffffffff81111561282d5761282c612352565b5b612839868287016127a0565b9350935050602061284c868287016123d6565b9150509250925092565b7f546f6b656e3a206f6e6c792066656520726564756374696f6e207065726d697460008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b60006128b26023836122a6565b91506128bd82612856565b604082019050919050565b600060208201905081810360008301526128e1816128a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561296e5780860481111561294a576129496128e8565b5b60018516156129595780820291505b808102905061296785612917565b945061292e565b94509492505050565b6000826129875760019050612a43565b816129955760009050612a43565b81600181146129ab57600281146129b5576129e4565b6001915050612a43565b60ff8411156129c7576129c66128e8565b5b8360020a9150848211156129de576129dd6128e8565b5b50612a43565b5060208310610133831016604e8410600b8410161715612a195782820a905083811115612a1457612a136128e8565b5b612a43565b612a268484846001612924565b92509050818404811115612a3d57612a3c6128e8565b5b81810290505b9392505050565b6000612a55826123b5565b9150612a60836125a4565b9250612a8d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612977565b905092915050565b6000612aa0826123b5565b9150612aab836123b5565b9250828202612ab9816123b5565b91508282048414831517612ad057612acf6128e8565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612b336028836122a6565b9150612b3e82612ad7565b604082019050919050565b60006020820190508181036000830152612b6281612b26565b9050919050565b6000612b74826123b5565b9150612b7f836123b5565b9250828203905081811115612b9757612b966128e8565b5b92915050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000612bf9603c836122a6565b9150612c0482612b9d565b604082019050919050565b60006020820190508181036000830152612c2881612bec565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c656020836122a6565b9150612c7082612c2f565b602082019050919050565b60006020820190508181036000830152612c9481612c58565b9050919050565b6000612ca6826123b5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cd857612cd76128e8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f546f6b656e3a2074726164696e6720616c7265616479206f70656e0000000000600082015250565b6000612d48601b836122a6565b9150612d5382612d12565b602082019050919050565b60006020820190508181036000830152612d7781612d3b565b9050919050565b6000612d89826123b5565b9150612d94836123b5565b9250828201905080821115612dac57612dab6128e8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206f6e6c792070657263656e742076616c75657320696e20726160008201527f6e67652028302c3130305d207065726d69737369626c65000000000000000000602082015250565b6000612e3d6037836122a6565b9150612e4882612de1565b604082019050919050565b60006020820190508181036000830152612e6c81612e30565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ead826123b5565b9150612eb8836123b5565b925082612ec857612ec7612e73565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f2f6024836122a6565b9150612f3a82612ed3565b604082019050919050565b60006020820190508181036000830152612f5e81612f22565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fc16022836122a6565b9150612fcc82612f65565b604082019050919050565b60006020820190508181036000830152612ff081612fb4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130536025836122a6565b915061305e82612ff7565b604082019050919050565b6000602082019050818103600083015261308281613046565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130e56023836122a6565b91506130f082613089565b604082019050919050565b60006020820190508181036000830152613114816130d8565b9050919050565b7f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760008201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b60006131776030836122a6565b91506131828261311b565b604082019050919050565b600060208201905081810360008301526131a68161316a565b9050919050565b7f546f6b656e3a207472616e7366657220696d706c6965732076696f6c6174696f60008201527f6e206f66206d61782077616c6c65740000000000000000000000000000000000602082015250565b6000613209602f836122a6565b9150613214826131ad565b604082019050919050565b60006020820190508181036000830152613238816131fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b600061329d6132986132938461326e565b613278565b6123b5565b9050919050565b6132ad81613282565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132e881612377565b82525050565b60006132fa83836132df565b60208301905092915050565b6000602082019050919050565b600061331e826132b3565b61332881856132be565b9350613333836132cf565b8060005b8381101561336457815161334b88826132ee565b975061335683613306565b925050600181019050613337565b5085935050505092915050565b600060a08201905061338660008301886124fa565b61339360208301876132a4565b81810360408301526133a58186613313565b90506133b46060830185612631565b6133c160808301846124fa565b9695505050505050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000613401601a836122a6565b915061340c826133cb565b602082019050919050565b60006020820190508181036000830152613430816133f4565b905091905056fea2646970667358221220f99a43b287fab56bdbc8794784ee93117f7678ca145dfa30daccd84245b0ed8064736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101445760003560e01c80638129fc1c116100b6578063aa4bde281161006f578063aa4bde2814610442578063c9567bf91461046d578063dd62ed3e14610484578063f1f5cd91146104c1578063f318bbfe146104ec578063f8d982b2146105155761014b565b80638129fc1c146103465780638da5cb5b1461035d57806395d89b41146103885780639686d322146103b35780639c0db5f3146103dc578063a9059cbb146104055761014b565b806323b872dd1161010857806323b872dd146102355780633049b58014610272578063313ce5671461029b57806370a08231146102c6578063715018a614610303578063743781321461031a5761014b565b806306fdde0314610150578063095ea7b31461017b57806309fb5639146101b85780630b78f9c0146101e157806318160ddd1461020a5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b5061016561053e565b604051610172919061232b565b60405180910390f35b34801561018757600080fd5b506101a2600480360381019061019d91906123eb565b61057b565b6040516101af9190612446565b60405180910390f35b3480156101c457600080fd5b506101df60048036038101906101da919061248d565b610592565b005b3480156101ed57600080fd5b50610208600480360381019061020391906124ba565b610607565b005b34801561021657600080fd5b5061021f610707565b60405161022c9190612509565b60405180910390f35b34801561024157600080fd5b5061025c60048036038101906102579190612524565b61072b565b6040516102699190612446565b60405180910390f35b34801561027e57600080fd5b5061029960048036038101906102949190612577565b610894565b005b3480156102a757600080fd5b506102b0610945565b6040516102bd91906125c0565b60405180910390f35b3480156102d257600080fd5b506102ed60048036038101906102e891906125db565b61094e565b6040516102fa9190612509565b60405180910390f35b34801561030f57600080fd5b50610318610997565b005b34801561032657600080fd5b5061032f610ae3565b60405161033d929190612608565b60405180910390f35b34801561035257600080fd5b5061035b610af5565b005b34801561036957600080fd5b50610372610ba8565b60405161037f9190612640565b60405180910390f35b34801561039457600080fd5b5061039d610bd1565b6040516103aa919061232b565b60405180910390f35b3480156103bf57600080fd5b506103da60048036038101906103d5919061265b565b610c0e565b005b3480156103e857600080fd5b5061040360048036038101906103fe9190612700565b610d2f565b005b34801561041157600080fd5b5061042c600480360381019061042791906123eb565b610fb4565b6040516104399190612446565b60405180910390f35b34801561044e57600080fd5b50610457610fcb565b6040516104649190612509565b60405180910390f35b34801561047957600080fd5b50610482610fea565b005b34801561049057600080fd5b506104ab60048036038101906104a69190612760565b61110c565b6040516104b89190612509565b60405180910390f35b3480156104cd57600080fd5b506104d6611193565b6040516104e39190612509565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e91906127f6565b611198565b005b34801561052157600080fd5b5061053c60048036038101906105379190612577565b61128a565b005b60606040518060400160405280600c81526020017f59616d616e6f74652d53656e0000000000000000000000000000000000000000815250905090565b6000610588338484611363565b6001905092915050565b7f000000000000000000000000616dadfd4b7e1d0a145cf914737d66214b3f1fae73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146105ea57600080fd5b80600960026101000a81548160ff02191690831515021790555050565b7f000000000000000000000000616dadfd4b7e1d0a145cf914737d66214b3f1fae73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461065f57600080fd5b6007600001548211156106a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161069e906128c8565b60405180910390fd5b6007600101548111156106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e6906128c8565b60405180910390fd5b81600760000181905550806007600101819055505050565b60006009600a6107179190612a4a565b63082a74406107269190612a95565b905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156107ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e390612b49565b60405180910390fd5b61087e843384600260008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546108799190612b69565b611363565b61088984848461152c565b600190509392505050565b7f000000000000000000000000616dadfd4b7e1d0a145cf914737d66214b3f1fae73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108ec57600080fd5b6000811180156108fc5750600481105b61093b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093290612c0f565b60405180910390fd5b8060068190555050565b60006009905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1c90612c7b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60078060000154908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7a90612c7b565b60405180910390fd5b6002600b6000815480929190610b9890612c9b565b9190505510610ba657600080fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f594d4e5400000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9390612c7b565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cd457600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610db490612c7b565b60405180910390fd5b60005b83839050811015610fae577f000000000000000000000000f776a14342d82889e1c34d38bf9e0d182e3ef1f773ffffffffffffffffffffffffffffffffffffffff16848483818110610e1557610e14612ce3565b5b9050602002016020810190610e2a91906125db565b73ffffffffffffffffffffffffffffffffffffffff1614158015610eb55750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff16848483818110610e8757610e86612ce3565b5b9050602002016020810190610e9c91906125db565b73ffffffffffffffffffffffffffffffffffffffff1614155b8015610f1457503073ffffffffffffffffffffffffffffffffffffffff16848483818110610ee657610ee5612ce3565b5b9050602002016020810190610efb91906125db565b73ffffffffffffffffffffffffffffffffffffffff1614155b610f1d57600080fd5b8160036000868685818110610f3557610f34612ce3565b5b9050602002016020810190610f4a91906125db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610fa690612c9b565b915050610dc0565b50505050565b6000610fc133848461152c565b6001905092915050565b6009600a610fd99190612a4a565b623eb6b0610fe79190612a95565b81565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611078576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106f90612c7b565b60405180910390fd5b6002600b541480156110975750600960009054906101000a900460ff16155b6110d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110cd90612d5e565b60405180910390fd5b43600a60008282546110e89190612d7e565b925050819055506001600960006101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b603181565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121d90612c7b565b60405180910390fd5b6002600b54108015611247575060026001600b546112449190612d7e565b10155b61125457611253612db2565b5b600b600081548092919061126790612c9b565b919050555080600a600082825461127e9190612d7e565b92505081905550505050565b7f000000000000000000000000616dadfd4b7e1d0a145cf914737d66214b3f1fae73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112e257600080fd5b8060001080156112f3575060648111155b611332576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132990612e53565b60405180910390fd5b6000606461133f3061094e565b8361134a9190612a95565b6113549190612ea2565b905061135f81611c7d565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c990612f45565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611441576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143890612fd7565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161151f9190612509565b60405180910390a3505050565b82600960009054906101000a900460ff168061159357507f000000000000000000000000616dadfd4b7e1d0a145cf914737d66214b3f1fae73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b806115dd5750732133352095925e76968d3a6890ea874cbcdcf31473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6115e657600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164c90613069565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116bb906130fb565b60405180910390fd5b60008211611707576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116fe9061318d565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117569190612b69565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156117d95750732133352095925e76968d3a6890ea874cbcdcf31473ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b80156118255750732133352095925e76968d3a6890ea874cbcdcf31473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561187d57507f000000000000000000000000616dadfd4b7e1d0a145cf914737d66214b3f1fae73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bbc57600960029054906101000a900460ff1680156118e85750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561193e5750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119a057600061194f8585611f22565b905061195a81611f68565b43600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b7f000000000000000000000000f776a14342d82889e1c34d38bf9e0d182e3ef1f773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a3b5750737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ab2576009600a611a4e9190612a4a565b623eb6b0611a5c9190612a95565b82611a668561094e565b611a709190612d7e565b1115611ab1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa89061321f565b60405180910390fd5b5b6000611abd3061094e565b9050611ac98582612054565b15611ad857611ad781611c7d565b5b6000611ae48685612107565b90506000811115611bb9578084611afb9190612b69565b935080600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611b4c9190612d7e565b925050819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bb09190612509565b60405180910390a35b50505b81600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611c0b9190612d7e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611c6f9190612509565b60405180910390a350505050565b6001600960016101000a81548160ff021916908315150217905550611ca18161221f565b905080611cc230737a250d5630b4cf539739df2c5dacb4c659f2488d61110c565b1015611d0457611d0330737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a611cef9190612a4a565b63082a7440611cfe9190612a95565b611363565b5b6000600267ffffffffffffffff811115611d2157611d2061323f565b5b604051908082528060200260200182016040528015611d4f5781602001602082028036833780820191505090505b5090503081600081518110611d6757611d66612ce3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611dd657611dd5612ce3565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611e66959493929190613371565b600060405180830381600087803b158015611e8057600080fd5b505af1158015611e94573d6000803e3d6000fd5b5050505060004790506000811115611f0257732133352095925e76968d3a6890ea874cbcdcf31473ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f00573d6000803e3d6000fd5b505b50506000600960016101000a81548160ff02191690831515021790555050565b6000611f2d83612288565b1580611f3f5750611f3d82612288565b155b611f4857600080fd5b611f5183612288565b15611f5e57819050611f62565b8290505b92915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054148061200e5750600143611fbf9190612d7e565b600654600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461200c9190612d7e565b105b905080612050576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204790613417565b60405180910390fd5b5050565b6000600960019054906101000a900460ff161580156120bf57507f000000000000000000000000f776a14342d82889e1c34d38bf9e0d182e3ef1f773ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156120e557506009600a6120d49190612a4a565b620645786120e29190612a95565b82115b80156120ff575043600a5460016120fc9190612d7e565b11155b905092915050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806121635750600a544311155b156121885760646031836121779190612a95565b6121819190612ea2565b9050612219565b60646000600a54146121fe577f000000000000000000000000f776a14342d82889e1c34d38bf9e0d182e3ef1f773ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16146121f2576007600101546121f9565b6007600001545b612201565b60195b8361220c9190612a95565b6122169190612ea2565b90505b92915050565b60006009600a61222f9190612a4a565b6229cf2061223d9190612a95565b8211612264576009600a6122519190612a4a565b6206457861225f9190612a95565b612281565b6009600a6122729190612a4a565b6229cf206122809190612a95565b5b9050919050565b600080823b905060008111915050919050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122d55780820151818401526020810190506122ba565b60008484015250505050565b6000601f19601f8301169050919050565b60006122fd8261229b565b61230781856122a6565b93506123178185602086016122b7565b612320816122e1565b840191505092915050565b6000602082019050818103600083015261234581846122f2565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061238282612357565b9050919050565b61239281612377565b811461239d57600080fd5b50565b6000813590506123af81612389565b92915050565b6000819050919050565b6123c8816123b5565b81146123d357600080fd5b50565b6000813590506123e5816123bf565b92915050565b600080604083850312156124025761240161234d565b5b6000612410858286016123a0565b9250506020612421858286016123d6565b9150509250929050565b60008115159050919050565b6124408161242b565b82525050565b600060208201905061245b6000830184612437565b92915050565b61246a8161242b565b811461247557600080fd5b50565b60008135905061248781612461565b92915050565b6000602082840312156124a3576124a261234d565b5b60006124b184828501612478565b91505092915050565b600080604083850312156124d1576124d061234d565b5b60006124df858286016123d6565b92505060206124f0858286016123d6565b9150509250929050565b612503816123b5565b82525050565b600060208201905061251e60008301846124fa565b92915050565b60008060006060848603121561253d5761253c61234d565b5b600061254b868287016123a0565b935050602061255c868287016123a0565b925050604061256d868287016123d6565b9150509250925092565b60006020828403121561258d5761258c61234d565b5b600061259b848285016123d6565b91505092915050565b600060ff82169050919050565b6125ba816125a4565b82525050565b60006020820190506125d560008301846125b1565b92915050565b6000602082840312156125f1576125f061234d565b5b60006125ff848285016123a0565b91505092915050565b600060408201905061261d60008301856124fa565b61262a60208301846124fa565b9392505050565b61263a81612377565b82525050565b60006020820190506126556000830184612631565b92915050565b600080604083850312156126725761267161234d565b5b6000612680858286016123a0565b925050602061269185828601612478565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f8401126126c0576126bf61269b565b5b8235905067ffffffffffffffff8111156126dd576126dc6126a0565b5b6020830191508360208202830111156126f9576126f86126a5565b5b9250929050565b6000806000604084860312156127195761271861234d565b5b600084013567ffffffffffffffff81111561273757612736612352565b5b612743868287016126aa565b9350935050602061275686828701612478565b9150509250925092565b600080604083850312156127775761277661234d565b5b6000612785858286016123a0565b9250506020612796858286016123a0565b9150509250929050565b60008083601f8401126127b6576127b561269b565b5b8235905067ffffffffffffffff8111156127d3576127d26126a0565b5b6020830191508360208202830111156127ef576127ee6126a5565b5b9250929050565b60008060006040848603121561280f5761280e61234d565b5b600084013567ffffffffffffffff81111561282d5761282c612352565b5b612839868287016127a0565b9350935050602061284c868287016123d6565b9150509250925092565b7f546f6b656e3a206f6e6c792066656520726564756374696f6e207065726d697460008201527f7465640000000000000000000000000000000000000000000000000000000000602082015250565b60006128b26023836122a6565b91506128bd82612856565b604082019050919050565b600060208201905081810360008301526128e1816128a5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561296e5780860481111561294a576129496128e8565b5b60018516156129595780820291505b808102905061296785612917565b945061292e565b94509492505050565b6000826129875760019050612a43565b816129955760009050612a43565b81600181146129ab57600281146129b5576129e4565b6001915050612a43565b60ff8411156129c7576129c66128e8565b5b8360020a9150848211156129de576129dd6128e8565b5b50612a43565b5060208310610133831016604e8410600b8410161715612a195782820a905083811115612a1457612a136128e8565b5b612a43565b612a268484846001612924565b92509050818404811115612a3d57612a3c6128e8565b5b81810290505b9392505050565b6000612a55826123b5565b9150612a60836125a4565b9250612a8d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612977565b905092915050565b6000612aa0826123b5565b9150612aab836123b5565b9250828202612ab9816123b5565b91508282048414831517612ad057612acf6128e8565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000612b336028836122a6565b9150612b3e82612ad7565b604082019050919050565b60006020820190508181036000830152612b6281612b26565b9050919050565b6000612b74826123b5565b9150612b7f836123b5565b9250828203905081811115612b9757612b966128e8565b5b92915050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b6000612bf9603c836122a6565b9150612c0482612b9d565b604082019050919050565b60006020820190508181036000830152612c2881612bec565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c656020836122a6565b9150612c7082612c2f565b602082019050919050565b60006020820190508181036000830152612c9481612c58565b9050919050565b6000612ca6826123b5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cd857612cd76128e8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f546f6b656e3a2074726164696e6720616c7265616479206f70656e0000000000600082015250565b6000612d48601b836122a6565b9150612d5382612d12565b602082019050919050565b60006020820190508181036000830152612d7781612d3b565b9050919050565b6000612d89826123b5565b9150612d94836123b5565b9250828201905080821115612dac57612dab6128e8565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206f6e6c792070657263656e742076616c75657320696e20726160008201527f6e67652028302c3130305d207065726d69737369626c65000000000000000000602082015250565b6000612e3d6037836122a6565b9150612e4882612de1565b604082019050919050565b60006020820190508181036000830152612e6c81612e30565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ead826123b5565b9150612eb8836123b5565b925082612ec857612ec7612e73565b5b828204905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f2f6024836122a6565b9150612f3a82612ed3565b604082019050919050565b60006020820190508181036000830152612f5e81612f22565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612fc16022836122a6565b9150612fcc82612f65565b604082019050919050565b60006020820190508181036000830152612ff081612fb4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006130536025836122a6565b915061305e82612ff7565b604082019050919050565b6000602082019050818103600083015261308281613046565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006130e56023836122a6565b91506130f082613089565b604082019050919050565b60006020820190508181036000830152613114816130d8565b9050919050565b7f546f6b656e3a207472616e7366657220616d6f756e74206d757374206265206760008201527f726561746572207468616e207a65726f00000000000000000000000000000000602082015250565b60006131776030836122a6565b91506131828261311b565b604082019050919050565b600060208201905081810360008301526131a68161316a565b9050919050565b7f546f6b656e3a207472616e7366657220696d706c6965732076696f6c6174696f60008201527f6e206f66206d61782077616c6c65740000000000000000000000000000000000602082015250565b6000613209602f836122a6565b9150613214826131ad565b604082019050919050565b60006020820190508181036000830152613238816131fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b6000819050919050565b600061329d6132986132938461326e565b613278565b6123b5565b9050919050565b6132ad81613282565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6132e881612377565b82525050565b60006132fa83836132df565b60208301905092915050565b6000602082019050919050565b600061331e826132b3565b61332881856132be565b9350613333836132cf565b8060005b8381101561336457815161334b88826132ee565b975061335683613306565b925050600181019050613337565b5085935050505092915050565b600060a08201905061338660008301886124fa565b61339360208301876132a4565b81810360408301526133a58186613313565b90506133b46060830185612631565b6133c160808301846124fa565b9695505050505050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000613401601a836122a6565b915061340c826133cb565b602082019050919050565b60006020820190508181036000830152613430816133f4565b905091905056fea2646970667358221220f99a43b287fab56bdbc8794784ee93117f7678ca145dfa30daccd84245b0ed8064736f6c63430008110033

Deployed Bytecode Sourcemap

3082:9859:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5273:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6073:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10740:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11504:388;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5550:91;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6231:358;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10877:289;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5459:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5649:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2927:148;;;;;;;;;;;;;:::i;:::-;;4010:50;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;12435:82;;;;;;;;;;;;;:::i;:::-;;2840:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5364:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11900:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12079:348;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5767:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3697:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12738:200;;;;;;;;;;;;;:::i;:::-;;5931:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4067:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12525:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11174:322;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5273:83;5310:13;5343:5;;;;;;;;;;;;;;;;;5336:12;;5273:83;:::o;6073:150::-;6139:4;6156:37;6165:10;6177:7;6186:6;6156:8;:37::i;:::-;6211:4;6204:11;;6073:150;;;;:::o;10740:129::-;10818:15;10804:29;;:10;:29;;;10796:38;;;;;;10855:6;10845:7;;:16;;;;;;;;;;;;;;;;;;10740:129;:::o;11504:388::-;11602:15;11588:29;;:10;:29;;;11580:38;;;;;;11650:11;:18;;;11637:9;:31;;11629:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11741:11;:19;;;11727:10;:33;;11719:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;11832:9;11811:11;:18;;:30;;;;11874:10;11852:11;:19;;:32;;;;11504:388;;:::o;5550:91::-;5594:7;3271:1;3333:2;:13;;;;:::i;:::-;3319:11;:27;;;;:::i;:::-;5614:19;;5550:91;:::o;6231:358::-;6320:4;6380:6;6345:11;:19;6357:6;6345:19;;;;;;;;;;;;;;;:31;6365:10;6345:31;;;;;;;;;;;;;;;;:41;;6337:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;6442:70;6451:6;6459:10;6505:6;6471:11;:19;6483:6;6471:19;;;;;;;;;;;;;;;:31;6491:10;6471:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;6442:8;:70::i;:::-;6523:36;6533:6;6541:9;6552:6;6523:9;:36::i;:::-;6577:4;6570:11;;6231:358;;;;;:::o;10877:289::-;10971:15;10957:29;;:10;:29;;;10949:38;;;;;;11025:1;11006:16;:20;:44;;;;;11049:1;11030:16;:20;11006:44;10998:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;11142:16;11126:13;:32;;;;10877:289;:::o;5459:83::-;5500:5;3271:1;5518:16;;5459:83;:::o;5649:110::-;5706:7;5733:9;:18;5743:7;5733:18;;;;;;;;;;;;;;;;5726:25;;5649:110;;;:::o;2927:148::-;2607:10;2597:20;;:6;;;;;;;;;;:20;;;2589:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;3034:1:::1;2997:40;;3018:6;::::0;::::1;;;;;;;;2997:40;;;;;;;;;;;;3065:1;3048:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2927:148::o:0;4010:50::-;;;;;;;;;;;;;;:::o;12435:82::-;2607:10;2597:20;;:6;;;;;;;;;;:20;;;2589:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12507:1:::1;12495:9;;:11;;;;;;;;;:::i;:::-;;;;;:13;12487:22;;;::::0;::::1;;12435:82::o:0;2840:79::-;2878:7;2905:6;;;;;;;;;;;2898:13;;2840:79;:::o;5364:87::-;5403:13;5436:7;;;;;;;;;;;;;;;;;5429:14;;5364:87;:::o;11900:171::-;2607:10;2597:20;;:6;;;;;;;;;;:20;;;2589:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12013:4:::1;11994:24;;:7;:24;;::::0;11986:33:::1;;;::::0;::::1;;12058:5;12030:16;:25;12047:7;12030:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;11900:171:::0;;:::o;12079:348::-;2607:10;2597:20;;:6;;;;;;;;;;:20;;;2589:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12174:6:::1;12169:251;12190:4;;:11;;12186:1;:15;12169:251;;;12242:11;12231:22;;:4;;12236:1;12231:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:22;;;;:81;;;;;4181:42;12279:33;;:4;;12284:1;12279:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:33;;;;12231:81;:130;;;;;12356:4;12337:24;;:4;;12342:1;12337:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;:24;;;;12231:130;12223:139;;;::::0;::::1;;12397:11;12377:8;:17;12386:4;;12391:1;12386:7;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;12377:17;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;12203:3;;;;;:::i;:::-;;;;12169:251;;;;12079:348:::0;;;:::o;5767:156::-;5836:4;5853:40;5863:10;5875:9;5886:6;5853:9;:40::i;:::-;5911:4;5904:11;;5767:156;;;;:::o;3697:67::-;3271:1;3751:2;:13;;;;:::i;:::-;3739:9;:25;;;;:::i;:::-;3697:67;:::o;12738:200::-;2607:10;2597:20;;:6;;;;;;;;;;:20;;;2589:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12812:1:::1;12799:9;;:14;:30;;;;;12818:11;;;;;;;;;;;12817:12;12799:30;12791:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;12889:12;12872:13;;:29;;;;;;;:::i;:::-;;;;;;;;12926:4;12912:11;;:18;;;;;;;;;;;;;;;;;;12738:200::o:0;5931:134::-;6003:7;6030:11;:18;6042:5;6030:18;;;;;;;;;;;;;;;:27;6049:7;6030:27;;;;;;;;;;;;;;;;6023:34;;5931:134;;;;:::o;4067:38::-;4103:2;4067:38;:::o;12525:205::-;2607:10;2597:20;;:6;;;;;;;;;;:20;;;2589:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12639:1:::1;12629:9;;:11;:27;;;;;12655:1;12652;12642:9;;:11;;;;:::i;:::-;:14;;12629:27;12622:35;;;;:::i;:::-;;12669:9;;:11;;;;;;;;;:::i;:::-;;;;;;12714:8;12697:13;;:25;;;;;;;:::i;:::-;;;;;;;;12525:205:::0;;;:::o;11174:322::-;11257:15;11243:29;;:10;:29;;;11235:38;;;;;;11296:7;11292:1;:11;:29;;;;;11318:3;11307:7;:14;;11292:29;11284:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;11392:20;11452:3;11425:24;11443:4;11425:9;:24::i;:::-;11415:7;:34;;;;:::i;:::-;:40;;;;:::i;:::-;11392:63;;11466:22;11475:12;11466:8;:22::i;:::-;11224:272;11174:322;:::o;6597:335::-;6707:1;6690:19;;:5;:19;;;6682:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6788:1;6769:21;;:7;:21;;;6761:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6870:6;6840:11;:18;6852:5;6840:18;;;;;;;;;;;;;;;:27;6859:7;6840:27;;;;;;;;;;;;;;;:36;;;;6908:7;6892:32;;6901:5;6892:32;;;6917:6;6892:32;;;;;;:::i;:::-;;;;;;;;6597:335;;;:::o;6940:1525::-;7013:4;4854:11;;;;;;;;;;;:40;;;;4879:15;4869:25;;:6;:25;;;4854:40;:66;;;;4470:42;4898:22;;:6;:22;;;4854:66;4846:75;;;;;;7062:1:::1;7046:18;;:4;:18;;::::0;7038:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7139:1;7125:16;;:2;:16;;::::0;7117:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7209:1;7200:6;:10;7192:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;7295:6;7276:9;:15;7286:4;7276:15;;;;;;;;;;;;;;;;:25;;;;;;;:::i;:::-;;;;;;;;7334:4;7318:21;;:4;:21;;;;:45;;;;;4470:42;7343:20;;:4;:20;;;;7318:45;:67;;;;;4470:42;7367:18;;:2;:18;;;;7318:67;:92;;;;;7395:15;7389:21;;:2;:21;;;;7318:92;7314:1066;;;7444:7;;;;;;;;;;;:34;;;;;7456:16;:22;7473:4;7456:22;;;;;;;;;;;;;;;;;;;;;;;;;7455:23;7444:34;:59;;;;;7483:16;:20;7500:2;7483:20;;;;;;;;;;;;;;;;;;;;;;;;;7482:21;7444:59;7441:240;;;7523:13;7539:24;7554:4;7560:2;7539:14;:24::i;:::-;7523:40;;7582:27;7603:5;7582:20;:27::i;:::-;7653:12;7628:15;:22;7644:5;7628:22;;;;;;;;;;;;;;;:37;;;;7504:177;7441:240;7709:11;7701:19;;:4;:19;;;:51;;;;;4181:42;7724:28;;:2;:28;;;;7701:51;7697:193;;;3271:1;3751:2;:13;;;;:::i;:::-;3739:9;:25;;;;:::i;:::-;7797:6;7781:13;7791:2;7781:9;:13::i;:::-;:22;;;;:::i;:::-;:41;;7773:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;7697:193;7905:28;7936:24;7954:4;7936:9;:24::i;:::-;7905:55;;7978:42;7993:4;7999:20;7978:14;:42::i;:::-;7974:95;;;8039:30;8048:20;8039:8;:30::i;:::-;7974:95;8113:19;8135:21;8143:4;8149:6;8135:7;:21::i;:::-;8113:43;;8187:1;8173:11;:15;8170:199;;;8218:11;8208:21;;;;;:::i;:::-;;;8276:11;8248:9;:24;8266:4;8248:24;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;8334:4;8311:42;;8320:4;8311:42;;;8341:11;8311:42;;;;;;:::i;:::-;;;;;;;;8170:199;7412:968;;7314:1066;8409:6;8392:9;:13;8402:2;8392:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;8446:2;8431:26;;8440:4;8431:26;;;8450:6;8431:26;;;;;;:::i;:::-;;;;;;;;6940:1525:::0;;;;:::o;8473:760::-;4739:4;4728:8;;:15;;;;;;;;;;;;;;;;;;8554:26:::1;8568:11;8554:13;:26::i;:::-;8540:40;;8645:11;8594:48;8612:4;4181:42;8594:9;:48::i;:::-;:62;8591:155;;;8673:61;8690:4;4181:42;3271:1;3333:2;:13;;;;:::i;:::-;3319:11;:27;;;;:::i;:::-;8673:8;:61::i;:::-;8591:155;8756:21;8794:1;8780:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8756:40;;8825:4;8807;8812:1;8807:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;8851:3;8841:4;8846:1;8841:7;;;;;;;;:::i;:::-;;;;;;;:13;;;;;;;;;::::0;::::1;4181:42;8865:64;;;8944:11;8970:1;8986:4;9013;9033:15;8865:194;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9070:26;9099:21;9070:50;;9155:1;9134:18;:22;9131:95;;;4470:42;9173:21;;:41;9195:18;9173:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9131:95;8529:704;;4777:5:::0;4766:8;;:16;;;;;;;;;;;;;;;;;;8473:760;:::o;10248:219::-;10322:7;10351:15;10362:3;10351:10;:15::i;:::-;10350:16;:38;;;;10371:17;10382:5;10371:10;:17::i;:::-;10370:18;10350:38;10342:47;;;;;;10404:15;10415:3;10404:10;:15::i;:::-;10400:59;;;10428:5;10421:12;;;;10400:59;10456:3;10449:10;;10248:219;;;;;:::o;10475:257::-;10543:14;10585:1;10560:15;:21;10576:4;10560:21;;;;;;;;;;;;;;;;:26;:105;;;;10662:1;10647:12;:16;;;;:::i;:::-;10629:13;;10605:15;:21;10621:4;10605:21;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;10604:60;10560:105;10543:122;;10684:9;10676:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10532:200;10475:257;:::o;9241:234::-;9322:15;9364:8;;;;;;;;;;;9363:9;:32;;;;;9384:11;9376:19;;:4;:19;;;;9363:32;:67;;;;;3271:1;3826:2;:13;;;;:::i;:::-;3816:7;:23;;;;:::i;:::-;9399:11;:31;9363:67;:104;;;;;9455:12;9438:13;;9434:1;:17;;;;:::i;:::-;:33;;9363:104;9350:117;;9241:234;;;;:::o;9676:361::-;9745:17;9779:8;:14;9788:4;9779:14;;;;;;;;;;;;;;;;;;;;;;;;;:47;;;;9813:13;;9797:12;:29;;9779:47;9776:253;;;9878:3;4103:2;9857:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;9845:36;;9776:253;;;10026:3;9949:1;9932:13;;:18;:90;;9967:11;9959:19;;:4;:19;;;:62;;10002:11;:19;;;9959:62;;;9981:11;:18;;;9959:62;9932:90;;;9953:2;9932:90;9922:6;:101;;;;:::i;:::-;:107;;;;:::i;:::-;9910:119;;9776:253;9676:361;;;;:::o;9483:185::-;9549:18;3271:1;3901:2;:13;;;;:::i;:::-;3889:9;:25;;;;:::i;:::-;9593:11;:29;:67;;3271:1;3826:2;:13;;;;:::i;:::-;3816:7;:23;;;;:::i;:::-;9593:67;;;3271:1;3901:2;:13;;;;:::i;:::-;3889:9;:25;;;;:::i;:::-;9593:67;9580:80;;9483:185;;;:::o;10045:195::-;10104:4;10121:12;10188:7;10176:20;10168:28;;10231:1;10224:4;:8;10217:15;;;10045:195;;;:::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;1553:117;1662:1;1659;1652: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:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:474::-;4104:6;4112;4161:2;4149:9;4140:7;4136:23;4132:32;4129:119;;;4167:79;;:::i;:::-;4129:119;4287:1;4312:53;4357:7;4348:6;4337:9;4333:22;4312:53;:::i;:::-;4302:63;;4258:117;4414:2;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4385:118;4036:474;;;;;:::o;4516:118::-;4603:24;4621:5;4603:24;:::i;:::-;4598:3;4591:37;4516:118;;:::o;4640:222::-;4733:4;4771:2;4760:9;4756:18;4748:26;;4784:71;4852:1;4841:9;4837:17;4828:6;4784:71;:::i;:::-;4640:222;;;;:::o;4868:619::-;4945:6;4953;4961;5010:2;4998:9;4989:7;4985:23;4981:32;4978:119;;;5016:79;;:::i;:::-;4978:119;5136:1;5161:53;5206:7;5197:6;5186:9;5182:22;5161:53;:::i;:::-;5151:63;;5107:117;5263:2;5289:53;5334:7;5325:6;5314:9;5310:22;5289:53;:::i;:::-;5279:63;;5234:118;5391:2;5417:53;5462:7;5453:6;5442:9;5438:22;5417:53;:::i;:::-;5407:63;;5362:118;4868:619;;;;;:::o;5493:329::-;5552:6;5601:2;5589:9;5580:7;5576:23;5572:32;5569:119;;;5607:79;;:::i;:::-;5569:119;5727:1;5752:53;5797:7;5788:6;5777:9;5773:22;5752:53;:::i;:::-;5742:63;;5698:117;5493:329;;;;:::o;5828:86::-;5863:7;5903:4;5896:5;5892:16;5881:27;;5828:86;;;:::o;5920:112::-;6003:22;6019:5;6003:22;:::i;:::-;5998:3;5991:35;5920:112;;:::o;6038:214::-;6127:4;6165:2;6154:9;6150:18;6142:26;;6178:67;6242:1;6231:9;6227:17;6218:6;6178:67;:::i;:::-;6038:214;;;;:::o;6258:329::-;6317:6;6366:2;6354:9;6345:7;6341:23;6337:32;6334:119;;;6372:79;;:::i;:::-;6334:119;6492:1;6517:53;6562:7;6553:6;6542:9;6538:22;6517:53;:::i;:::-;6507:63;;6463:117;6258:329;;;;:::o;6593:332::-;6714:4;6752:2;6741:9;6737:18;6729:26;;6765:71;6833:1;6822:9;6818:17;6809:6;6765:71;:::i;:::-;6846:72;6914:2;6903:9;6899:18;6890:6;6846:72;:::i;:::-;6593:332;;;;;:::o;6931:118::-;7018:24;7036:5;7018:24;:::i;:::-;7013:3;7006:37;6931:118;;:::o;7055:222::-;7148:4;7186:2;7175:9;7171:18;7163:26;;7199:71;7267:1;7256:9;7252:17;7243:6;7199:71;:::i;:::-;7055:222;;;;:::o;7283:468::-;7348:6;7356;7405:2;7393:9;7384:7;7380:23;7376:32;7373:119;;;7411:79;;:::i;:::-;7373:119;7531:1;7556:53;7601:7;7592:6;7581:9;7577:22;7556:53;:::i;:::-;7546:63;;7502:117;7658:2;7684:50;7726:7;7717:6;7706:9;7702:22;7684:50;:::i;:::-;7674:60;;7629:115;7283:468;;;;;:::o;7757:117::-;7866:1;7863;7856:12;7880:117;7989:1;7986;7979:12;8003:117;8112:1;8109;8102:12;8143:568;8216:8;8226:6;8276:3;8269:4;8261:6;8257:17;8253:27;8243:122;;8284:79;;:::i;:::-;8243:122;8397:6;8384:20;8374:30;;8427:18;8419:6;8416:30;8413:117;;;8449:79;;:::i;:::-;8413:117;8563:4;8555:6;8551:17;8539:29;;8617:3;8609:4;8601:6;8597:17;8587:8;8583:32;8580:41;8577:128;;;8624:79;;:::i;:::-;8577:128;8143:568;;;;;:::o;8717:698::-;8809:6;8817;8825;8874:2;8862:9;8853:7;8849:23;8845:32;8842:119;;;8880:79;;:::i;:::-;8842:119;9028:1;9017:9;9013:17;9000:31;9058:18;9050:6;9047:30;9044:117;;;9080:79;;:::i;:::-;9044:117;9193:80;9265:7;9256:6;9245:9;9241:22;9193:80;:::i;:::-;9175:98;;;;8971:312;9322:2;9348:50;9390:7;9381:6;9370:9;9366:22;9348:50;:::i;:::-;9338:60;;9293:115;8717:698;;;;;:::o;9421:474::-;9489:6;9497;9546:2;9534:9;9525:7;9521:23;9517:32;9514:119;;;9552:79;;:::i;:::-;9514:119;9672:1;9697:53;9742:7;9733:6;9722:9;9718:22;9697:53;:::i;:::-;9687:63;;9643:117;9799:2;9825:53;9870:7;9861:6;9850:9;9846:22;9825:53;:::i;:::-;9815:63;;9770:118;9421:474;;;;;:::o;9915:565::-;9985:8;9995:6;10045:3;10038:4;10030:6;10026:17;10022:27;10012:122;;10053:79;;:::i;:::-;10012:122;10166:6;10153:20;10143:30;;10196:18;10188:6;10185:30;10182:117;;;10218:79;;:::i;:::-;10182:117;10332:4;10324:6;10320:17;10308:29;;10386:3;10378:4;10370:6;10366:17;10356:8;10352:32;10349:41;10346:128;;;10393:79;;:::i;:::-;10346:128;9915:565;;;;;:::o;10486:698::-;10578:6;10586;10594;10643:2;10631:9;10622:7;10618:23;10614:32;10611:119;;;10649:79;;:::i;:::-;10611:119;10797:1;10786:9;10782:17;10769:31;10827:18;10819:6;10816:30;10813:117;;;10849:79;;:::i;:::-;10813:117;10962:77;11031:7;11022:6;11011:9;11007:22;10962:77;:::i;:::-;10944:95;;;;10740:309;11088:2;11114:53;11159:7;11150:6;11139:9;11135:22;11114:53;:::i;:::-;11104:63;;11059:118;10486:698;;;;;:::o;11190:222::-;11330:34;11326:1;11318:6;11314:14;11307:58;11399:5;11394:2;11386:6;11382:15;11375:30;11190:222;:::o;11418:366::-;11560:3;11581:67;11645:2;11640:3;11581:67;:::i;:::-;11574:74;;11657:93;11746:3;11657:93;:::i;:::-;11775:2;11770:3;11766:12;11759:19;;11418:366;;;:::o;11790:419::-;11956:4;11994:2;11983:9;11979:18;11971:26;;12043:9;12037:4;12033:20;12029:1;12018:9;12014:17;12007:47;12071:131;12197:4;12071:131;:::i;:::-;12063:139;;11790:419;;;:::o;12215:180::-;12263:77;12260:1;12253:88;12360:4;12357:1;12350:15;12384:4;12381:1;12374:15;12401:102;12443:8;12490:5;12487:1;12483:13;12462:34;;12401:102;;;:::o;12509:848::-;12570:5;12577:4;12601:6;12592:15;;12625:5;12616:14;;12639:712;12660:1;12650:8;12647:15;12639:712;;;12755:4;12750:3;12746:14;12740:4;12737:24;12734:50;;;12764:18;;:::i;:::-;12734:50;12814:1;12804:8;12800:16;12797:451;;;13229:4;13222:5;13218:16;13209:25;;12797:451;13279:4;13273;13269:15;13261:23;;13309:32;13332:8;13309:32;:::i;:::-;13297:44;;12639:712;;;12509:848;;;;;;;:::o;13363:1073::-;13417:5;13608:8;13598:40;;13629:1;13620:10;;13631:5;;13598:40;13657:4;13647:36;;13674:1;13665:10;;13676:5;;13647:36;13743:4;13791:1;13786:27;;;;13827:1;13822:191;;;;13736:277;;13786:27;13804:1;13795:10;;13806:5;;;13822:191;13867:3;13857:8;13854:17;13851:43;;;13874:18;;:::i;:::-;13851:43;13923:8;13920:1;13916:16;13907:25;;13958:3;13951:5;13948:14;13945:40;;;13965:18;;:::i;:::-;13945:40;13998:5;;;13736:277;;14122:2;14112:8;14109:16;14103:3;14097:4;14094:13;14090:36;14072:2;14062:8;14059:16;14054:2;14048:4;14045:12;14041:35;14025:111;14022:246;;;14178:8;14172:4;14168:19;14159:28;;14213:3;14206:5;14203:14;14200:40;;;14220:18;;:::i;:::-;14200:40;14253:5;;14022:246;14293:42;14331:3;14321:8;14315:4;14312:1;14293:42;:::i;:::-;14278:57;;;;14367:4;14362:3;14358:14;14351:5;14348:25;14345:51;;;14376:18;;:::i;:::-;14345:51;14425:4;14418:5;14414:16;14405:25;;13363:1073;;;;;;:::o;14442:281::-;14500:5;14524:23;14542:4;14524:23;:::i;:::-;14516:31;;14568:25;14584:8;14568:25;:::i;:::-;14556:37;;14612:104;14649:66;14639:8;14633:4;14612:104;:::i;:::-;14603:113;;14442:281;;;;:::o;14729:410::-;14769:7;14792:20;14810:1;14792:20;:::i;:::-;14787:25;;14826:20;14844:1;14826:20;:::i;:::-;14821:25;;14881:1;14878;14874:9;14903:30;14921:11;14903:30;:::i;:::-;14892:41;;15082:1;15073:7;15069:15;15066:1;15063:22;15043:1;15036:9;15016:83;14993:139;;15112:18;;:::i;:::-;14993:139;14777:362;14729:410;;;;:::o;15145:227::-;15285:34;15281:1;15273:6;15269:14;15262:58;15354:10;15349:2;15341:6;15337:15;15330:35;15145:227;:::o;15378:366::-;15520:3;15541:67;15605:2;15600:3;15541:67;:::i;:::-;15534:74;;15617:93;15706:3;15617:93;:::i;:::-;15735:2;15730:3;15726:12;15719:19;;15378:366;;;:::o;15750:419::-;15916:4;15954:2;15943:9;15939:18;15931:26;;16003:9;15997:4;15993:20;15989:1;15978:9;15974:17;15967:47;16031:131;16157:4;16031:131;:::i;:::-;16023:139;;15750:419;;;:::o;16175:194::-;16215:4;16235:20;16253:1;16235:20;:::i;:::-;16230:25;;16269:20;16287:1;16269:20;:::i;:::-;16264:25;;16313:1;16310;16306:9;16298:17;;16337:1;16331:4;16328:11;16325:37;;;16342:18;;:::i;:::-;16325:37;16175:194;;;;:::o;16375:247::-;16515:34;16511:1;16503:6;16499:14;16492:58;16584:30;16579:2;16571:6;16567:15;16560:55;16375:247;:::o;16628:366::-;16770:3;16791:67;16855:2;16850:3;16791:67;:::i;:::-;16784:74;;16867:93;16956:3;16867:93;:::i;:::-;16985:2;16980:3;16976:12;16969:19;;16628:366;;;:::o;17000:419::-;17166:4;17204:2;17193:9;17189:18;17181:26;;17253:9;17247:4;17243:20;17239:1;17228:9;17224:17;17217:47;17281:131;17407:4;17281:131;:::i;:::-;17273:139;;17000:419;;;:::o;17425:182::-;17565:34;17561:1;17553:6;17549:14;17542:58;17425:182;:::o;17613:366::-;17755:3;17776:67;17840:2;17835:3;17776:67;:::i;:::-;17769:74;;17852:93;17941:3;17852:93;:::i;:::-;17970:2;17965:3;17961:12;17954:19;;17613:366;;;:::o;17985:419::-;18151:4;18189:2;18178:9;18174:18;18166:26;;18238:9;18232:4;18228:20;18224:1;18213:9;18209:17;18202:47;18266:131;18392:4;18266:131;:::i;:::-;18258:139;;17985:419;;;:::o;18410:233::-;18449:3;18472:24;18490:5;18472:24;:::i;:::-;18463:33;;18518:66;18511:5;18508:77;18505:103;;18588:18;;:::i;:::-;18505:103;18635:1;18628:5;18624:13;18617:20;;18410:233;;;:::o;18649:180::-;18697:77;18694:1;18687:88;18794:4;18791:1;18784:15;18818:4;18815:1;18808:15;18835:177;18975:29;18971:1;18963:6;18959:14;18952:53;18835:177;:::o;19018:366::-;19160:3;19181:67;19245:2;19240:3;19181:67;:::i;:::-;19174:74;;19257:93;19346:3;19257:93;:::i;:::-;19375:2;19370:3;19366:12;19359:19;;19018:366;;;:::o;19390:419::-;19556:4;19594:2;19583:9;19579:18;19571:26;;19643:9;19637:4;19633:20;19629:1;19618:9;19614:17;19607:47;19671:131;19797:4;19671:131;:::i;:::-;19663:139;;19390:419;;;:::o;19815:191::-;19855:3;19874:20;19892:1;19874:20;:::i;:::-;19869:25;;19908:20;19926:1;19908:20;:::i;:::-;19903:25;;19951:1;19948;19944:9;19937:16;;19972:3;19969:1;19966:10;19963:36;;;19979:18;;:::i;:::-;19963:36;19815:191;;;;:::o;20012:180::-;20060:77;20057:1;20050:88;20157:4;20154:1;20147:15;20181:4;20178:1;20171:15;20198:246;20338:34;20334:1;20326:6;20322:14;20315:58;20407:25;20402:2;20394:6;20390:15;20383:50;20198:246;:::o;20454:382::-;20596:3;20621:67;20685:2;20680:3;20621:67;:::i;:::-;20614:74;;20701:93;20790:3;20701:93;:::i;:::-;20823:2;20818:3;20814:12;20807:19;;20454:382;;;:::o;20846:435::-;21012:4;21054:2;21043:9;21039:18;21031:26;;21107:9;21101:4;21097:20;21093:1;21082:9;21078:17;21071:47;21139:131;21265:4;21139:131;:::i;:::-;21131:139;;20846:435;;;:::o;21291:196::-;21343:77;21340:1;21333:88;21444:4;21441:1;21434:15;21472:4;21469:1;21462:15;21497:205;21537:1;21558:20;21576:1;21558:20;:::i;:::-;21553:25;;21596:20;21614:1;21596:20;:::i;:::-;21591:25;;21639:1;21629:35;;21644:18;;:::i;:::-;21629:35;21690:1;21687;21683:9;21678:14;;21497:205;;;;:::o;21712:235::-;21856:34;21852:1;21844:6;21840:14;21833:58;21929:6;21924:2;21916:6;21912:15;21905:31;21712:235;:::o;21957:382::-;22099:3;22124:67;22188:2;22183:3;22124:67;:::i;:::-;22117:74;;22204:93;22293:3;22204:93;:::i;:::-;22326:2;22321:3;22317:12;22310:19;;21957:382;;;:::o;22349:435::-;22515:4;22557:2;22546:9;22542:18;22534:26;;22610:9;22604:4;22600:20;22596:1;22585:9;22581:17;22574:47;22642:131;22768:4;22642:131;:::i;:::-;22634:139;;22349:435;;;:::o;22794:233::-;22938:34;22934:1;22926:6;22922:14;22915:58;23011:4;23006:2;22998:6;22994:15;22987:29;22794:233;:::o;23037:382::-;23179:3;23204:67;23268:2;23263:3;23204:67;:::i;:::-;23197:74;;23284:93;23373:3;23284:93;:::i;:::-;23406:2;23401:3;23397:12;23390:19;;23037:382;;;:::o;23429:435::-;23595:4;23637:2;23626:9;23622:18;23614:26;;23690:9;23684:4;23680:20;23676:1;23665:9;23661:17;23654:47;23722:131;23848:4;23722:131;:::i;:::-;23714:139;;23429:435;;;:::o;23874:236::-;24018:34;24014:1;24006:6;24002:14;23995:58;24091:7;24086:2;24078:6;24074:15;24067:32;23874:236;:::o;24120:382::-;24262:3;24287:67;24351:2;24346:3;24287:67;:::i;:::-;24280:74;;24367:93;24456:3;24367:93;:::i;:::-;24489:2;24484:3;24480:12;24473:19;;24120:382;;;:::o;24512:435::-;24678:4;24720:2;24709:9;24705:18;24697:26;;24773:9;24767:4;24763:20;24759:1;24748:9;24744:17;24737:47;24805:131;24931:4;24805:131;:::i;:::-;24797:139;;24512:435;;;:::o;24957:234::-;25101:34;25097:1;25089:6;25085:14;25078:58;25174:5;25169:2;25161:6;25157:15;25150:30;24957:234;:::o;25201:382::-;25343:3;25368:67;25432:2;25427:3;25368:67;:::i;:::-;25361:74;;25448:93;25537:3;25448:93;:::i;:::-;25570:2;25565:3;25561:12;25554:19;;25201:382;;;:::o;25593:435::-;25759:4;25801:2;25790:9;25786:18;25778:26;;25854:9;25848:4;25844:20;25840:1;25829:9;25825:17;25818:47;25886:131;26012:4;25886:131;:::i;:::-;25878:139;;25593:435;;;:::o;26038:247::-;26182:34;26178:1;26170:6;26166:14;26159:58;26255:18;26250:2;26242:6;26238:15;26231:43;26038:247;:::o;26295:382::-;26437:3;26462:67;26526:2;26521:3;26462:67;:::i;:::-;26455:74;;26542:93;26631:3;26542:93;:::i;:::-;26664:2;26659:3;26655:12;26648:19;;26295:382;;;:::o;26687:435::-;26853:4;26895:2;26884:9;26880:18;26872:26;;26948:9;26942:4;26938:20;26934:1;26923:9;26919:17;26912:47;26980:131;27106:4;26980:131;:::i;:::-;26972:139;;26687:435;;;:::o;27132:246::-;27276:34;27272:1;27264:6;27260:14;27253:58;27349:17;27344:2;27336:6;27332:15;27325:42;27132:246;:::o;27388:382::-;27530:3;27555:67;27619:2;27614:3;27555:67;:::i;:::-;27548:74;;27635:93;27724:3;27635:93;:::i;:::-;27757:2;27752:3;27748:12;27741:19;;27388:382;;;:::o;27780:435::-;27946:4;27988:2;27977:9;27973:18;27965:26;;28041:9;28035:4;28031:20;28027:1;28016:9;28012:17;28005:47;28073:131;28199:4;28073:131;:::i;:::-;28065:139;;27780:435;;;:::o;28225:196::-;28277:77;28274:1;28267:88;28378:4;28375:1;28368:15;28406:4;28403:1;28396:15;28431:93;28476:7;28509:5;28498:16;;28431:93;;;:::o;28534:68::-;28562:3;28587:5;28580:12;;28534:68;;;:::o;28612:166::-;28670:9;28707:61;28725:42;28734:32;28760:5;28734:32;:::i;:::-;28725:42;:::i;:::-;28707:61;:::i;:::-;28694:74;;28612:166;;;:::o;28788:155::-;28887:45;28926:5;28887:45;:::i;:::-;28882:3;28875:58;28788:155;;:::o;28953:122::-;29020:6;29058:5;29052:12;29042:22;;28953:122;;;:::o;29085:196::-;29184:11;29222:6;29217:3;29210:19;29266:4;29261:3;29257:14;29242:29;;29085:196;;;;:::o;29291:144::-;29358:4;29385:3;29377:11;;29419:4;29414:3;29410:14;29402:22;;29291:144;;;:::o;29445:116::-;29526:24;29544:5;29526:24;:::i;:::-;29521:3;29514:37;29445:116;;:::o;29571:191::-;29640:10;29665:46;29707:3;29699:6;29665:46;:::i;:::-;29747:4;29742:3;29738:14;29724:28;;29571:191;;;;:::o;29772:121::-;29842:4;29878;29873:3;29869:14;29861:22;;29772:121;;;:::o;29937:780::-;30056:3;30089:54;30137:5;30089:54;:::i;:::-;30163:86;30242:6;30237:3;30163:86;:::i;:::-;30156:93;;30277:56;30327:5;30277:56;:::i;:::-;30360:7;30395:1;30380:304;30405:6;30402:1;30399:13;30380:304;;;30489:6;30483:13;30520:63;30579:3;30564:13;30520:63;:::i;:::-;30513:70;;30610:60;30663:6;30610:60;:::i;:::-;30600:70;;30444:240;30427:1;30424;30420:9;30415:14;;30380:304;;;30384:14;30704:3;30697:10;;30061:656;;;29937:780;;;;:::o;30727:863::-;30990:4;31032:3;31021:9;31017:19;31009:27;;31050:71;31118:1;31107:9;31103:17;31094:6;31050:71;:::i;:::-;31135:80;31211:2;31200:9;31196:18;31187:6;31135:80;:::i;:::-;31266:9;31260:4;31256:20;31251:2;31240:9;31236:18;31229:48;31298:108;31401:4;31392:6;31298:108;:::i;:::-;31290:116;;31420:72;31488:2;31477:9;31473:18;31464:6;31420:72;:::i;:::-;31506:73;31574:3;31563:9;31559:19;31550:6;31506:73;:::i;:::-;30727:863;;;;;;;;:::o;31600:184::-;31744:28;31740:1;31732:6;31728:14;31721:52;31600:184;:::o;31794:382::-;31936:3;31961:67;32025:2;32020:3;31961:67;:::i;:::-;31954:74;;32041:93;32130:3;32041:93;:::i;:::-;32163:2;32158:3;32154:12;32147:19;;31794:382;;;:::o;32186:435::-;32352:4;32394:2;32383:9;32379:18;32371:26;;32447:9;32441:4;32437:20;32433:1;32422:9;32418:17;32411:47;32479:131;32605:4;32479:131;:::i;:::-;32471:139;;32186:435;;;:::o

Swarm Source

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