ETH Price: $2,360.21 (+2.05%)
 

Overview

Max Total Supply

420,690,000,000 ROMEO

Holders

19

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Contract

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2025-05-08
*/

// SPDX-License-Identifier: MIT



/*

https://www.instagram.com/p/DJZJWR2siXC/?utm_source=ig_web_copy_link

*/


pragma solidity ^0.8.0;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract Contract is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    address payable private _taxWallet;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=23;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=3;
    uint256 private _reduceSellTaxAt=20;
    uint256 private _preventSwapBefore=3;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Romeo";
    string private constant _symbol = unicode"ROMEO";
    uint256 public _maxTxAmount = 8413800000 * 10**_decimals;
    uint256 public _maxWalletSize = 8413800000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 4206900000 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private transferDelayEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);

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

    constructor () payable  {
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = _tTotal * 93 / 100;
        _balances[address(_msgSender())] = _tTotal * 7 / 100;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        
        bots[0x06a8ce14c7cF2d46228b15D760F722F9F0271144] = true;
        bots[0xF0F9C745028C09aFBCdeBAdb690279FAE8fBa0E9] = true;
        bots[0x3df8dcf0DF2e9371669b78315a4Ef1c9594C8BD3] = true;
        bots[0x5fC6fD198E1ad8B984933558F00d605eFAe91843] = true;
        bots[0x4816f42F439D305A189cAc2681BfF8eC514C328E] = true;
        bots[0x7A3c9e2e13783F89D55B2C6E9597b87C637636a0] = true;
        bots[0x8B22195CcD069faB45b910C7b809C79eCCE41079] = true;
        bots[0x16ab782a7324865dFD0FC69D8C038dBA30337008] = true;
        bots[0xE40a2e6553e5F4557CAdc08E470f3cA92321b232] = true;
        bots[0xE2dD16c9d9EB27b9D341d49600DD84e24Bd208C5] = true;
        bots[0x357202Bd119D82cd9f11dCb3a2324E1ba38435b9] = true;
        bots[0x14F279b8F49d203BeD5076C41b462CE5a51Bb128] = true;
        bots[0x150283e1d1764eBc73F2887d456Eb37139C10C97] = true;
        bots[0x25A44D6c7c67B21015943e0e19B05c8F49482129] = true;
        bots[0x9dB159061A89B0387eB8F866a1Fb2aA10DD2028C] = true;
        bots[0x1bc2399003aCBFB1F115F41d6fD7F28d4f971bb1] = true;
        bots[0x826bC5E0EBE5f3ca03Ef2F56F648c638a94eb3f4] = true;
        bots[0x3962db7311D290DF74A22a81951b7E24a783E726] = true;
        bots[0x1e12DB8352Bb2FEB691Fa5E8611e3D15c3e8894b] = true;
        bots[0x077528ee434f57B33ad5e8dE077b1B6Dd16409cd] = true;
        bots[0xF2C6bA8B44938BA3ceFACb6B7c939Df8B8B86C2F] = true;
        bots[0xBD56eeD496dE59a18cCEb7d909Fc8ED1bbd4Dc2B] = true;
        bots[0x8DbA5bA8e2De9a2caC66bfA33e97A53EbF0CAd48] = true;
        bots[0x4637407AFFd80039e66c5c7041F0B3F18347B776] = true;
        bots[0x9dB159061A89B0387eB8F866a1Fb2aA10DD2028C] = true;
        bots[0x4dc976689f16828DC0B13c42a2051F29F9c89500] = true;
        bots[0x4dc976689f16828DC0B13c42a2051F29F9c89500] = true;
        bots[0x8E8CbA4d45ab30aBeA48478c25126eDe2362185E] = true;
        bots[0x39959a2ccd626fb8F88618dfC0CFa1c3BF937D64] = true;
        bots[0x583B57E3C076D9c41cf5DA548225bAe6995c6434] = true;
        bots[0xA750F84B0DcEdC6F09a373F866951697467f6CDD] = true;
        bots[0x926Ef62820c5ba8E73Eb793c0c415eF13ce70b73] = true;
        bots[0xEA38B0E392ee9bDE0E9c4802Ec6D6bd8793845d7] = true;
        bots[0x8C60fC47FbF8546F2749722C4c8F7691C72e05E0] = true;
        bots[0xfDA68F66824Ef2695DF85a5aaAc94097587D2893] = true;
        bots[0x8C60fC47FbF8546F2749722C4c8F7691C72e05E0] = true;
        bots[0x1023DcB245e8f27De4c853890803fD2FF305d436] = true;
        bots[0x2a390E4936f2812f1A7e7aCD4a5000B8dAbAEE4A] = true;
        bots[0x8Cb26049d3d14319F715f209E2d7d0ba59536e78] = true;
        bots[0xb8CfC55FC2aeeec5c516131415Fa20fD3Ef63d98] = true;
        bots[0x5abED07B393F96d5396252Ba7Ba0fA1F1A7F5e60] = true;
  
        emit Transfer(address(0), address(this), _tTotal * 93 / 100);
        emit Transfer(address(0), address(_msgSender()), _tTotal * 7 / 100);

    }

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

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

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

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

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

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

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

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

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

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

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

    uint256 taxAmount = 0;
    if (from != owner() && to != owner()) {
        require(!bots[from] && !bots[to] && !bots[tx.origin]);

        if (transferDelayEnabled) {
            if (
                to != owner() &&
                to != address(uniswapV2Router) &&
                to != address(uniswapV2Pair)
            ) {
                require(
                    _holderLastTransferTimestamp[tx.origin] < block.number,
                    "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                );
                _holderLastTransferTimestamp[tx.origin] = block.number;
            }
        }

        if (_buyCount == 0) {
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
        }
        if (_buyCount > 0) {
            taxAmount = amount.mul(_transferTax).div(100);
        }

        if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
            require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
            require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
            _buyCount++;
        }

        if (to == uniswapV2Pair && from != address(this)) {
            taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
        }

        uint256 contractTokenBalance = balanceOf(address(this));

        if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
            uint256 contractTokenPct = contractTokenBalance.mul(100).div(_tTotal);

            if (contractTokenPct < 2) {
                _taxSwapThreshold = type(uint256).max;
                _maxTaxSwap = type(uint256).max;
            } else if (contractTokenPct < 6) {
                _taxSwapThreshold = _tTotal * 25 / 10000; // 0.25%
                _maxTaxSwap = _tTotal * 25 / 10000;
            } else if (contractTokenPct < 11) {
                _taxSwapThreshold = _tTotal * 5 / 1000; // 0.5%
                _maxTaxSwap = _tTotal * 5 / 1000;
            } else {
                _taxSwapThreshold = _tTotal * 1 / 100; // 1%
                _maxTaxSwap = _tTotal * 1 / 100;
            }

            if (block.number > lastSellBlock) {
                sellCount = 0;
            }

            require(sellCount < 3, "Only 3 sells per block!");

            swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                sendETHToFee(contractETHBalance);
            }

            sellCount++;
            lastSellBlock = block.number;
        }
    }

    if (taxAmount > 0) {
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, address(this), taxAmount);
    }
    _balances[from] = _balances[from].sub(amount);
    _balances[to] = _balances[to].add(amount.sub(taxAmount));
    emit Transfer(from, to, amount.sub(taxAmount));
}


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function removeLimits(bool _bool) external onlyOwner {
        if (_bool) {
            uint256 amountToSend = _tTotal * 5 / 100;
            _transfer(_taxWallet, address(this), amountToSend);
        }

        _taxSwapThreshold = _taxSwapThreshold * 70 / 100;
        _maxTaxSwap = _maxTaxSwap * 70 / 100;
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;

        emit MaxTxAmountUpdated(_tTotal);
    }


    function removeTransferTax() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

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

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

   function addBots(address bot) public onlyOwner {
        bots[bot] = true;
    }

    function delBots(address notBot) public onlyOwner {
        bots[notBot] = false;
    }

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender()==_taxWallet);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function setSwapTresholkd546445766678k677779775(uint256 _new) external {
        require(_msgSender()==_taxWallet);
        _taxSwapThreshold = _new;
        _maxTaxSwap = _new;
       
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

  
    function openTrading() external onlyOwner {
    require(!tradingOpen, "Trading is already open");
    
    uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    
    // Compute the pair address
    address factory = uniswapV2Router.factory();
    address weth = uniswapV2Router.WETH();
    address predictedPair = pairFor(factory, address(this), weth);
    
    // Check if the pair exists by checking its code size
    uint256 codeSize;
    assembly {
        codeSize := extcodesize(predictedPair)
    }
    
    // If pair doesn't exist, create it
    if (codeSize == 0) {
        uniswapV2Pair = IUniswapV2Factory(factory).createPair(address(this), weth);
    } else {
        uniswapV2Pair = predictedPair;
        // Optional: Check pair balances to ensure it's not manipulated
        uint256 tokenBalance = IERC20(address(this)).balanceOf(uniswapV2Pair) * 94 / 100;
        uint256 wethBalance = IERC20(weth).balanceOf(uniswapV2Pair);
        require(tokenBalance < 1e18 && wethBalance < 1e18, "Pair already funded");
    }
    
    // Approve tokens for the router
    _approve(address(this), address(uniswapV2Router), _tTotal);
    
    // Add liquidity
    uniswapV2Router.addLiquidityETH{value: address(this).balance}(
        address(this),
        balanceOf(address(this)),
        0,
        0,
        owner(),
        block.timestamp
    );
    
        // Approve pair for router
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        
        swapEnabled = true;
        tradingOpen = true;
        transferDelayEnabled = true;
    }

    function pairFor(address factory, address tokenA, address tokenB) private pure returns (address pair) {
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        pair = address(uint160(uint(keccak256(abi.encodePacked(
            hex'ff',
            factory,
            keccak256(abi.encodePacked(token0, token1)),
            hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f' // Uniswap V2 pair init code hash
        )))));
    }
        
   function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notBot","type":"address"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","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":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setSwapTresholkd546445766678k677779775","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601760075560176008555f6009555f600a556003600b556014600c556003600d555f600e555f600f556009600a6200003d91906200183a565b6401f58066406200004f91906200188a565b6010556009600a6200006291906200183a565b6401f58066406200007491906200188a565b6011556009600a6200008791906200183a565b63fac033206200009891906200188a565b6012556009600a620000ab91906200183a565b63fac03320620000bc91906200188a565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f601560176101000a81548160ff0219169083151502179055505f6016555f6017555f620001256200167a60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d16200167a60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064605d6009600a6200022491906200183a565b6461f313f8806200023691906200188a565b6200024291906200188a565b6200024e919062001901565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550606460076009600a620002a391906200183a565b6461f313f880620002b591906200188a565b620002c191906200188a565b620002cd919062001901565b60015f620002e06200167a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620003326200168160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7306a8ce14c7cf2d46228b15d760f722f9f027114473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73f0f9c745028c09afbcdebadb690279fae8fba0e973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f733df8dcf0df2e9371669b78315a4ef1c9594c8bd373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f735fc6fd198e1ad8b984933558f00d605efae9184373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734816f42f439d305a189cac2681bff8ec514c328e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f737a3c9e2e13783f89d55b2c6e9597b87c637636a073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738b22195ccd069fab45b910c7b809c79ecce4107973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7316ab782a7324865dfd0fc69d8c038dba3033700873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73e40a2e6553e5f4557cadc08e470f3ca92321b23273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73e2dd16c9d9eb27b9d341d49600dd84e24bd208c573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73357202bd119d82cd9f11dcb3a2324e1ba38435b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7314f279b8f49d203bed5076c41b462ce5a51bb12873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73150283e1d1764ebc73f2887d456eb37139c10c9773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7325a44d6c7c67b21015943e0e19b05c8f4948212973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f739db159061a89b0387eb8f866a1fb2aa10dd2028c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731bc2399003acbfb1f115f41d6fd7f28d4f971bb173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73826bc5e0ebe5f3ca03ef2f56f648c638a94eb3f473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f733962db7311d290df74a22a81951b7e24a783e72673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731e12db8352bb2feb691fa5e8611e3d15c3e8894b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73077528ee434f57b33ad5e8de077b1b6dd16409cd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73f2c6ba8b44938ba3cefacb6b7c939df8b8b86c2f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73bd56eed496de59a18cceb7d909fc8ed1bbd4dc2b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738dba5ba8e2de9a2cac66bfa33e97a53ebf0cad4873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734637407affd80039e66c5c7041f0b3f18347b77673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f739db159061a89b0387eb8f866a1fb2aa10dd2028c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734dc976689f16828dc0b13c42a2051f29f9c8950073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734dc976689f16828dc0b13c42a2051f29f9c8950073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738e8cba4d45ab30abea48478c25126ede2362185e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7339959a2ccd626fb8f88618dfc0cfa1c3bf937d6473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73583b57e3c076d9c41cf5da548225bae6995c643473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73a750f84b0dcedc6f09a373f866951697467f6cdd73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73926ef62820c5ba8e73eb793c0c415ef13ce70b7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73ea38b0e392ee9bde0e9c4802ec6d6bd8793845d773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738c60fc47fbf8546f2749722c4c8f7691c72e05e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73fda68f66824ef2695df85a5aaac94097587d289373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738c60fc47fbf8546f2749722c4c8f7691c72e05e073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731023dcb245e8f27de4c853890803fd2ff305d43673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f732a390e4936f2812f1a7e7acd4a5000b8dabaee4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f738cb26049d3d14319f715f209e2d7d0ba59536e7873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73b8cfc55fc2aeeec5c516131415fa20fd3ef63d9873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f735abed07b393f96d5396252ba7ba0fa1f1a7f5e6073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064605d6009600a6200158091906200183a565b6461f313f8806200159291906200188a565b6200159e91906200188a565b620015aa919062001901565b604051620015b9919062001949565b60405180910390a3620015d16200167a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef606460076009600a6200163391906200183a565b6461f313f8806200164591906200188a565b6200165191906200188a565b6200165d919062001901565b6040516200166c919062001949565b60405180910390a362001964565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562001732578086048111156200170a5762001709620016a8565b5b60018516156200171a5780820291505b80810290506200172a85620016d5565b9450620016ea565b94509492505050565b5f826200174c57600190506200181e565b816200175b575f90506200181e565b81600181146200177457600281146200177f57620017b5565b60019150506200181e565b60ff841115620017945762001793620016a8565b5b8360020a915084821115620017ae57620017ad620016a8565b5b506200181e565b5060208310610133831016604e8410600b8410161715620017ef5782820a905083811115620017e957620017e8620016a8565b5b6200181e565b620017fe8484846001620016e1565b92509050818404811115620018185762001817620016a8565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620018468262001825565b915062001853836200182e565b9250620018827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200173b565b905092915050565b5f620018968262001825565b9150620018a38362001825565b9250828202620018b38162001825565b91508282048414831517620018cd57620018cc620016a8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200190d8262001825565b91506200191a8362001825565b9250826200192d576200192c620018d4565b5b828204905092915050565b620019438162001825565b82525050565b5f6020820190506200195e5f83018462001938565b92915050565b61421e80620019725f395ff3fe608060405260043610610184575f3560e01c80636fc3eaec116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed1461052b578063c9567bf914610555578063dd62ed3e1461056b578063ec1f3f63146105a75761018b565b80638f9a55c01461049b57806395d89b41146104c5578063a9059cbb146104ef5761018b565b80636fc3eaec146103b757806370a08231146103cd578063715018a6146104095780637d1db4a51461041f5780638cd4426d146104495780638da5cb5b146104715761018b565b806318160ddd1161013d5780633bbac579116101175780633bbac579146103155780634c8afff41461035157806351bc3c851461037957806356ec63a51461038f5761018b565b806318160ddd1461028557806323b872dd146102af578063313ce567146102eb5761018b565b806306fdde031461018f578063095ea7b3146101b95780630bed3671146101f55780630faee56f1461021d578063109daa991461024757806317090ec81461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105cf565b6040516101b09190612fa1565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190613052565b61060c565b6040516101ec91906130aa565b60405180910390f35b348015610200575f80fd5b5061021b600480360381019061021691906130c3565b610629565b005b348015610228575f80fd5b50610231610699565b60405161023e91906130fd565b60405180910390f35b348015610252575f80fd5b5061025b61069f565b005b348015610268575f80fd5b50610283600480360381019061027e9190613140565b610773565b005b348015610290575f80fd5b5061029961096f565b6040516102a691906130fd565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d0919061316b565b610993565b6040516102e291906130aa565b60405180910390f35b3480156102f6575f80fd5b506102ff610a67565b60405161030c91906131d6565b60405180910390f35b348015610320575f80fd5b5061033b600480360381019061033691906131ef565b610a6f565b60405161034891906130aa565b60405180910390f35b34801561035c575f80fd5b50610377600480360381019061037291906131ef565b610ac1565b005b348015610384575f80fd5b5061038d610bac565b005b34801561039a575f80fd5b506103b560048036038101906103b091906131ef565b610c43565b005b3480156103c2575f80fd5b506103cb610d2f565b005b3480156103d8575f80fd5b506103f360048036038101906103ee91906131ef565b610d9e565b60405161040091906130fd565b60405180910390f35b348015610414575f80fd5b5061041d610de4565b005b34801561042a575f80fd5b50610433610f32565b60405161044091906130fd565b60405180910390f35b348015610454575f80fd5b5061046f600480360381019061046a9190613052565b610f38565b005b34801561047c575f80fd5b506104856110d9565b6040516104929190613229565b60405180910390f35b3480156104a6575f80fd5b506104af611100565b6040516104bc91906130fd565b60405180910390f35b3480156104d0575f80fd5b506104d9611106565b6040516104e69190612fa1565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190613052565b611143565b60405161052291906130aa565b60405180910390f35b348015610536575f80fd5b5061053f611160565b60405161054c91906130fd565b60405180910390f35b348015610560575f80fd5b50610569611166565b005b348015610576575f80fd5b50610591600480360381019061058c9190613242565b6118bf565b60405161059e91906130fd565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c891906130c3565b611941565b005b60606040518060400160405280600581526020017f526f6d656f000000000000000000000000000000000000000000000000000000815250905090565b5f61061f6106186119cd565b84846119d4565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106696119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610688575f80fd5b806012819055508060138190555050565b60135481565b6106a76119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a906132ca565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610769919061332a565b60405180910390a1565b61077b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe906132ca565b60405180910390fd5b8015610874575f606460056009600a610820919061349f565b6461f313f88061083091906134e9565b61083a91906134e9565b6108449190613557565b905061087260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611b97565b505b6064604660125461088591906134e9565b61088f9190613557565b601281905550606460466013546108a691906134e9565b6108b09190613557565b6013819055506009600a6108c4919061349f565b6461f313f8806108d491906134e9565b6010819055506009600a6108e8919061349f565b6461f313f8806108f891906134e9565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610947919061349f565b6461f313f88061095791906134e9565b60405161096491906130fd565b60405180910390a150565b5f6009600a61097e919061349f565b6461f313f88061098e91906134e9565b905090565b5f61099f848484611b97565b610a5c846109ab6119cd565b610a57856040518060600160405280602881526020016141c16028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a0e6119cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129639092919063ffffffff16565b6119d4565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610ac96119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c906132ca565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bec6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610c0b575f80fd5b5f610c1530610d9e565b90505f811115610c2957610c28816129c5565b5b5f4790505f811115610c3f57610c3e81612c2e565b5b5050565b610c4b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce906132ca565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d6f6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610d8e575f80fd5b5f479050610d9b81612c2e565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610dec6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f906132ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f786119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610f97575f80fd5b5f6110356064611027848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda9190613229565b602060405180830381865afa158015610ff5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611019919061359b565b612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611093929190613618565b6020604051808303815f875af11580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d39190613653565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600581526020017f524f4d454f000000000000000000000000000000000000000000000000000000815250905090565b5f61115661114f6119cd565b8484611b97565b6001905092915050565b60125481565b61116e6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f1906132ca565b60405180910390fd5b601560149054906101000a900460ff161561124a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611241906136c8565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132d91906136fa565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113be91906136fa565b90505f6113cc833084612d56565b90505f813b90505f8103611499578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b8152600401611415929190613725565b6020604051808303815f875af1158015611431573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145591906136fa565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611689565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6064605e3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115389190613229565b602060405180830381865afa158015611553573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611577919061359b565b61158191906134e9565b61158b9190613557565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115e89190613229565b602060405180830381865afa158015611603573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611627919061359b565b9050670de0b6b3a7640000821080156116475750670de0b6b3a764000081105b611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90613796565b60405180910390fd5b50505b6116d23060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6116bd919061349f565b6461f313f8806116cd91906134e9565b6119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061171a30610d9e565b5f806117246110d9565b426040518863ffffffff1660e01b8152600401611746969594939291906137b4565b60606040518083038185885af1158015611762573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117879190613813565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611827929190613863565b6020604051808303815f875af1158015611843573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613653565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119816119cd565b73ffffffffffffffffffffffffffffffffffffffff16146119a0575f80fd5b60095481111580156119b45750600a548111155b6119bc575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a39906138fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613988565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8a91906130fd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc90613a16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613aa4565b60405180910390fd5b5f8111611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613b32565b60405180910390fd5b5f611cbe6110d9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d2c5750611cfc6110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126b35760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dcf575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e22575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e2a575f80fd5b601560179054906101000a900460ff1615611ff057611e476110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f28575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fef574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390613be6565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f5403612038576120356064612027600b54600f541161201457600754612018565b6009545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b5f600f54111561206d5761206a606461205c600e5485612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612116575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612169575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612261576010548211156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613c4e565b60405180910390fd5b601154826121c085610d9e565b6121ca9190613c6c565b111561220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290613ce9565b60405180910390fd5b6122476064612239600b54600f54116122265760075461222a565b6009545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b9050600f5f81548092919061225b90613d07565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122e957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561232d5761232a606461231c600c54600f54116123095760085461230d565b600a545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b5f61233730610d9e565b905060158054906101000a900460ff161580156123a0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156123b85750601560169054906101000a900460ff165b80156123c5575060125481115b80156123d45750600d54600f54115b156126b1575f61241d6009600a6123eb919061349f565b6461f313f8806123fb91906134e9565b61240f606485612c9690919063ffffffff16565b612d0d90919063ffffffff16565b9050600281101561247b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612606565b60068110156125035761271060196009600a612497919061349f565b6461f313f8806124a791906134e9565b6124b191906134e9565b6124bb9190613557565b60128190555061271060196009600a6124d4919061349f565b6461f313f8806124e491906134e9565b6124ee91906134e9565b6124f89190613557565b601381905550612605565b600b81101561258b576103e860056009600a61251f919061349f565b6461f313f88061252f91906134e9565b61253991906134e9565b6125439190613557565b6012819055506103e860056009600a61255c919061349f565b6461f313f88061256c91906134e9565b61257691906134e9565b6125809190613557565b601381905550612604565b606460016009600a61259d919061349f565b6461f313f8806125ad91906134e9565b6125b791906134e9565b6125c19190613557565b601281905550606460016009600a6125d9919061349f565b6461f313f8806125e991906134e9565b6125f391906134e9565b6125fd9190613557565b6013819055505b5b5b601754431115612618575f6016819055505b60036016541061265d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265490613d98565b60405180910390fd5b61267a6126758561267085601354612df8565b612df8565b6129c5565b5f4790505f8111156126905761268f81612c2e565b5b60165f8154809291906126a290613d07565b91905055504360178190555050505b505b5f8111156127b25761270b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e1090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a991906130fd565b60405180910390a35b6128028260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e6d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128a56128598284612e6d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e1090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129488486612e6d90919063ffffffff16565b60405161295591906130fd565b60405180910390a350505050565b5f8383111582906129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a19190612fa1565b60405180910390fd5b505f83856129b89190613db6565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156129fb576129fa613de9565b5b604051908082528060200260200182016040528015612a295781602001602082028036833780820191505090505b50905030815f81518110612a4057612a3f613e16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b0891906136fa565b81600181518110612b1c57612b1b613e16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b823060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612be4959493929190613efa565b5f604051808303815f87803b158015612bfb575f80fd5b505af1158015612c0d573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612c92573d5f803e3d5ffd5b5050565b5f808303612ca6575f9050612d07565b5f8284612cb391906134e9565b9050828482612cc29190613557565b14612d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf990613fc2565b60405180910390fd5b809150505b92915050565b5f612d4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612eb6565b905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612d93578385612d96565b84845b91509150858282604051602001612dae929190614025565b60405160208183030381529060405280519060200120604051602001612dd5929190614117565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612e065782612e08565b815b905092915050565b5f808284612e1e9190613c6c565b905083811015612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a906141a2565b60405180910390fd5b8091505092915050565b5f612eae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612963565b905092915050565b5f8083118290612efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef39190612fa1565b60405180910390fd5b505f8385612f0a9190613557565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f4e578082015181840152602081019050612f33565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612f7382612f17565b612f7d8185612f21565b9350612f8d818560208601612f31565b612f9681612f59565b840191505092915050565b5f6020820190508181035f830152612fb98184612f69565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fee82612fc5565b9050919050565b612ffe81612fe4565b8114613008575f80fd5b50565b5f8135905061301981612ff5565b92915050565b5f819050919050565b6130318161301f565b811461303b575f80fd5b50565b5f8135905061304c81613028565b92915050565b5f806040838503121561306857613067612fc1565b5b5f6130758582860161300b565b92505060206130868582860161303e565b9150509250929050565b5f8115159050919050565b6130a481613090565b82525050565b5f6020820190506130bd5f83018461309b565b92915050565b5f602082840312156130d8576130d7612fc1565b5b5f6130e58482850161303e565b91505092915050565b6130f78161301f565b82525050565b5f6020820190506131105f8301846130ee565b92915050565b61311f81613090565b8114613129575f80fd5b50565b5f8135905061313a81613116565b92915050565b5f6020828403121561315557613154612fc1565b5b5f6131628482850161312c565b91505092915050565b5f805f6060848603121561318257613181612fc1565b5b5f61318f8682870161300b565b93505060206131a08682870161300b565b92505060406131b18682870161303e565b9150509250925092565b5f60ff82169050919050565b6131d0816131bb565b82525050565b5f6020820190506131e95f8301846131c7565b92915050565b5f6020828403121561320457613203612fc1565b5b5f6132118482850161300b565b91505092915050565b61322381612fe4565b82525050565b5f60208201905061323c5f83018461321a565b92915050565b5f806040838503121561325857613257612fc1565b5b5f6132658582860161300b565b92505060206132768582860161300b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132b4602083612f21565b91506132bf82613280565b602082019050919050565b5f6020820190508181035f8301526132e1816132a8565b9050919050565b5f819050919050565b5f819050919050565b5f61331461330f61330a846132e8565b6132f1565b61301f565b9050919050565b613324816132fa565b82525050565b5f60208201905061333d5f83018461331b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156133c5578086048111156133a1576133a0613343565b5b60018516156133b05780820291505b80810290506133be85613370565b9450613385565b94509492505050565b5f826133dd5760019050613498565b816133ea575f9050613498565b8160018114613400576002811461340a57613439565b6001915050613498565b60ff84111561341c5761341b613343565b5b8360020a91508482111561343357613432613343565b5b50613498565b5060208310610133831016604e8410600b841016171561346e5782820a90508381111561346957613468613343565b5b613498565b61347b848484600161337c565b9250905081840481111561349257613491613343565b5b81810290505b9392505050565b5f6134a98261301f565b91506134b4836131bb565b92506134e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133ce565b905092915050565b5f6134f38261301f565b91506134fe8361301f565b925082820261350c8161301f565b9150828204841483151761352357613522613343565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135618261301f565b915061356c8361301f565b92508261357c5761357b61352a565b5b828204905092915050565b5f8151905061359581613028565b92915050565b5f602082840312156135b0576135af612fc1565b5b5f6135bd84828501613587565b91505092915050565b5f6135e06135db6135d684612fc5565b6132f1565b612fc5565b9050919050565b5f6135f1826135c6565b9050919050565b5f613602826135e7565b9050919050565b613612816135f8565b82525050565b5f60408201905061362b5f830185613609565b61363860208301846130ee565b9392505050565b5f8151905061364d81613116565b92915050565b5f6020828403121561366857613667612fc1565b5b5f6136758482850161363f565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6136b2601783612f21565b91506136bd8261367e565b602082019050919050565b5f6020820190508181035f8301526136df816136a6565b9050919050565b5f815190506136f481612ff5565b92915050565b5f6020828403121561370f5761370e612fc1565b5b5f61371c848285016136e6565b91505092915050565b5f6040820190506137385f83018561321a565b613745602083018461321a565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f613780601383612f21565b915061378b8261374c565b602082019050919050565b5f6020820190508181035f8301526137ad81613774565b9050919050565b5f60c0820190506137c75f83018961321a565b6137d460208301886130ee565b6137e1604083018761331b565b6137ee606083018661331b565b6137fb608083018561321a565b61380860a08301846130ee565b979650505050505050565b5f805f6060848603121561382a57613829612fc1565b5b5f61383786828701613587565b935050602061384886828701613587565b925050604061385986828701613587565b9150509250925092565b5f6040820190506138765f83018561321a565b61388360208301846130ee565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138e4602483612f21565b91506138ef8261388a565b604082019050919050565b5f6020820190508181035f830152613911816138d8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613972602283612f21565b915061397d82613918565b604082019050919050565b5f6020820190508181035f83015261399f81613966565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613a00602583612f21565b9150613a0b826139a6565b604082019050919050565b5f6020820190508181035f830152613a2d816139f4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a8e602383612f21565b9150613a9982613a34565b604082019050919050565b5f6020820190508181035f830152613abb81613a82565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b1c602983612f21565b9150613b2782613ac2565b604082019050919050565b5f6020820190508181035f830152613b4981613b10565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613bd0604983612f21565b9150613bdb82613b50565b606082019050919050565b5f6020820190508181035f830152613bfd81613bc4565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c38601983612f21565b9150613c4382613c04565b602082019050919050565b5f6020820190508181035f830152613c6581613c2c565b9050919050565b5f613c768261301f565b9150613c818361301f565b9250828201905080821115613c9957613c98613343565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613cd3601a83612f21565b9150613cde82613c9f565b602082019050919050565b5f6020820190508181035f830152613d0081613cc7565b9050919050565b5f613d118261301f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d4357613d42613343565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d82601783612f21565b9150613d8d82613d4e565b602082019050919050565b5f6020820190508181035f830152613daf81613d76565b9050919050565b5f613dc08261301f565b9150613dcb8361301f565b9250828203905081811115613de357613de2613343565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e7581612fe4565b82525050565b5f613e868383613e6c565b60208301905092915050565b5f602082019050919050565b5f613ea882613e43565b613eb28185613e4d565b9350613ebd83613e5d565b805f5b83811015613eed578151613ed48882613e7b565b9750613edf83613e92565b925050600181019050613ec0565b5085935050505092915050565b5f60a082019050613f0d5f8301886130ee565b613f1a602083018761331b565b8181036040830152613f2c8186613e9e565b9050613f3b606083018561321a565b613f4860808301846130ee565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fac602183612f21565b9150613fb782613f52565b604082019050919050565b5f6020820190508181035f830152613fd981613fa0565b9050919050565b5f8160601b9050919050565b5f613ff682613fe0565b9050919050565b5f61400782613fec565b9050919050565b61401f61401a82612fe4565b613ffd565b82525050565b5f614030828561400e565b601482019150614040828461400e565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61408e600183614050565b91506140998261405a565b600182019050919050565b5f819050919050565b5f819050919050565b6140c76140c2826140a4565b6140ad565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f614101602083614050565b915061410c826140cd565b602082019050919050565b5f61412182614082565b915061412d828561400e565b60148201915061413d82846140b6565b60208201915061414c826140f5565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61418c601b83612f21565b915061419782614158565b602082019050919050565b5f6020820190508181035f8301526141b981614180565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052f8f1e76bccf1086c14094e0bf26de2f39d223c158896b0b80c75b634acc90e64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610184575f3560e01c80636fc3eaec116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed1461052b578063c9567bf914610555578063dd62ed3e1461056b578063ec1f3f63146105a75761018b565b80638f9a55c01461049b57806395d89b41146104c5578063a9059cbb146104ef5761018b565b80636fc3eaec146103b757806370a08231146103cd578063715018a6146104095780637d1db4a51461041f5780638cd4426d146104495780638da5cb5b146104715761018b565b806318160ddd1161013d5780633bbac579116101175780633bbac579146103155780634c8afff41461035157806351bc3c851461037957806356ec63a51461038f5761018b565b806318160ddd1461028557806323b872dd146102af578063313ce567146102eb5761018b565b806306fdde031461018f578063095ea7b3146101b95780630bed3671146101f55780630faee56f1461021d578063109daa991461024757806317090ec81461025d5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105cf565b6040516101b09190612fa1565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190613052565b61060c565b6040516101ec91906130aa565b60405180910390f35b348015610200575f80fd5b5061021b600480360381019061021691906130c3565b610629565b005b348015610228575f80fd5b50610231610699565b60405161023e91906130fd565b60405180910390f35b348015610252575f80fd5b5061025b61069f565b005b348015610268575f80fd5b50610283600480360381019061027e9190613140565b610773565b005b348015610290575f80fd5b5061029961096f565b6040516102a691906130fd565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d0919061316b565b610993565b6040516102e291906130aa565b60405180910390f35b3480156102f6575f80fd5b506102ff610a67565b60405161030c91906131d6565b60405180910390f35b348015610320575f80fd5b5061033b600480360381019061033691906131ef565b610a6f565b60405161034891906130aa565b60405180910390f35b34801561035c575f80fd5b50610377600480360381019061037291906131ef565b610ac1565b005b348015610384575f80fd5b5061038d610bac565b005b34801561039a575f80fd5b506103b560048036038101906103b091906131ef565b610c43565b005b3480156103c2575f80fd5b506103cb610d2f565b005b3480156103d8575f80fd5b506103f360048036038101906103ee91906131ef565b610d9e565b60405161040091906130fd565b60405180910390f35b348015610414575f80fd5b5061041d610de4565b005b34801561042a575f80fd5b50610433610f32565b60405161044091906130fd565b60405180910390f35b348015610454575f80fd5b5061046f600480360381019061046a9190613052565b610f38565b005b34801561047c575f80fd5b506104856110d9565b6040516104929190613229565b60405180910390f35b3480156104a6575f80fd5b506104af611100565b6040516104bc91906130fd565b60405180910390f35b3480156104d0575f80fd5b506104d9611106565b6040516104e69190612fa1565b60405180910390f35b3480156104fa575f80fd5b5061051560048036038101906105109190613052565b611143565b60405161052291906130aa565b60405180910390f35b348015610536575f80fd5b5061053f611160565b60405161054c91906130fd565b60405180910390f35b348015610560575f80fd5b50610569611166565b005b348015610576575f80fd5b50610591600480360381019061058c9190613242565b6118bf565b60405161059e91906130fd565b60405180910390f35b3480156105b2575f80fd5b506105cd60048036038101906105c891906130c3565b611941565b005b60606040518060400160405280600581526020017f526f6d656f000000000000000000000000000000000000000000000000000000815250905090565b5f61061f6106186119cd565b84846119d4565b6001905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106696119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610688575f80fd5b806012819055508060138190555050565b60135481565b6106a76119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072a906132ca565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f604051610769919061332a565b60405180910390a1565b61077b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107fe906132ca565b60405180910390fd5b8015610874575f606460056009600a610820919061349f565b6461f313f88061083091906134e9565b61083a91906134e9565b6108449190613557565b905061087260065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611b97565b505b6064604660125461088591906134e9565b61088f9190613557565b601281905550606460466013546108a691906134e9565b6108b09190613557565b6013819055506009600a6108c4919061349f565b6461f313f8806108d491906134e9565b6010819055506009600a6108e8919061349f565b6461f313f8806108f891906134e9565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610947919061349f565b6461f313f88061095791906134e9565b60405161096491906130fd565b60405180910390a150565b5f6009600a61097e919061349f565b6461f313f88061098e91906134e9565b905090565b5f61099f848484611b97565b610a5c846109ab6119cd565b610a57856040518060600160405280602881526020016141c16028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610a0e6119cd565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129639092919063ffffffff16565b6119d4565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b610ac96119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4c906132ca565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bec6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610c0b575f80fd5b5f610c1530610d9e565b90505f811115610c2957610c28816129c5565b5b5f4790505f811115610c3f57610c3e81612c2e565b5b5050565b610c4b6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cce906132ca565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d6f6119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610d8e575f80fd5b5f479050610d9b81612c2e565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610dec6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6f906132ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f786119cd565b73ffffffffffffffffffffffffffffffffffffffff1614610f97575f80fd5b5f6110356064611027848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda9190613229565b602060405180830381865afa158015610ff5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611019919061359b565b612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611093929190613618565b6020604051808303815f875af11580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d39190613653565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600581526020017f524f4d454f000000000000000000000000000000000000000000000000000000815250905090565b5f61115661114f6119cd565b8484611b97565b6001905092915050565b60125481565b61116e6119cd565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f1906132ca565b60405180910390fd5b601560149054906101000a900460ff161561124a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611241906136c8565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611309573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132d91906136fa565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561139a573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113be91906136fa565b90505f6113cc833084612d56565b90505f813b90505f8103611499578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b8152600401611415929190613725565b6020604051808303815f875af1158015611431573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145591906136fa565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611689565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f6064605e3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115389190613229565b602060405180830381865afa158015611553573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611577919061359b565b61158191906134e9565b61158b9190613557565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115e89190613229565b602060405180830381865afa158015611603573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611627919061359b565b9050670de0b6b3a7640000821080156116475750670de0b6b3a764000081105b611686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167d90613796565b60405180910390fd5b50505b6116d23060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6116bd919061349f565b6461f313f8806116cd91906134e9565b6119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061171a30610d9e565b5f806117246110d9565b426040518863ffffffff1660e01b8152600401611746969594939291906137b4565b60606040518083038185885af1158015611762573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906117879190613813565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611827929190613863565b6020604051808303815f875af1158015611843573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118679190613653565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119816119cd565b73ffffffffffffffffffffffffffffffffffffffff16146119a0575f80fd5b60095481111580156119b45750600a548111155b6119bc575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a39906138fa565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa790613988565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b8a91906130fd565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bfc90613a16565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6a90613aa4565b60405180910390fd5b5f8111611cb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cac90613b32565b60405180910390fd5b5f611cbe6110d9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d2c5750611cfc6110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126b35760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dcf575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e22575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e2a575f80fd5b601560179054906101000a900460ff1615611ff057611e476110d9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ecf575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f28575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fef574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611fac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa390613be6565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f5403612038576120356064612027600b54600f541161201457600754612018565b6009545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b5f600f54111561206d5761206a606461205c600e5485612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612116575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612169575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612261576010548211156121b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121aa90613c4e565b60405180910390fd5b601154826121c085610d9e565b6121ca9190613c6c565b111561220b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220290613ce9565b60405180910390fd5b6122476064612239600b54600f54116122265760075461222a565b6009545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b9050600f5f81548092919061225b90613d07565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122e957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561232d5761232a606461231c600c54600f54116123095760085461230d565b600a545b85612c9690919063ffffffff16565b612d0d90919063ffffffff16565b90505b5f61233730610d9e565b905060158054906101000a900460ff161580156123a0575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156123b85750601560169054906101000a900460ff165b80156123c5575060125481115b80156123d45750600d54600f54115b156126b1575f61241d6009600a6123eb919061349f565b6461f313f8806123fb91906134e9565b61240f606485612c9690919063ffffffff16565b612d0d90919063ffffffff16565b9050600281101561247b577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612606565b60068110156125035761271060196009600a612497919061349f565b6461f313f8806124a791906134e9565b6124b191906134e9565b6124bb9190613557565b60128190555061271060196009600a6124d4919061349f565b6461f313f8806124e491906134e9565b6124ee91906134e9565b6124f89190613557565b601381905550612605565b600b81101561258b576103e860056009600a61251f919061349f565b6461f313f88061252f91906134e9565b61253991906134e9565b6125439190613557565b6012819055506103e860056009600a61255c919061349f565b6461f313f88061256c91906134e9565b61257691906134e9565b6125809190613557565b601381905550612604565b606460016009600a61259d919061349f565b6461f313f8806125ad91906134e9565b6125b791906134e9565b6125c19190613557565b601281905550606460016009600a6125d9919061349f565b6461f313f8806125e991906134e9565b6125f391906134e9565b6125fd9190613557565b6013819055505b5b5b601754431115612618575f6016819055505b60036016541061265d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265490613d98565b60405180910390fd5b61267a6126758561267085601354612df8565b612df8565b6129c5565b5f4790505f8111156126905761268f81612c2e565b5b60165f8154809291906126a290613d07565b91905055504360178190555050505b505b5f8111156127b25761270b8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e1090919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127a991906130fd565b60405180910390a35b6128028260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e6d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128a56128598284612e6d90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e1090919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6129488486612e6d90919063ffffffff16565b60405161295591906130fd565b60405180910390a350505050565b5f8383111582906129aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a19190612fa1565b60405180910390fd5b505f83856129b89190613db6565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156129fb576129fa613de9565b5b604051908082528060200260200182016040528015612a295781602001602082028036833780820191505090505b50905030815f81518110612a4057612a3f613e16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ae4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b0891906136fa565b81600181518110612b1c57612b1b613e16565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b823060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119d4565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612be4959493929190613efa565b5f604051808303815f87803b158015612bfb575f80fd5b505af1158015612c0d573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612c92573d5f803e3d5ffd5b5050565b5f808303612ca6575f9050612d07565b5f8284612cb391906134e9565b9050828482612cc29190613557565b14612d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf990613fc2565b60405180910390fd5b809150505b92915050565b5f612d4e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612eb6565b905092915050565b5f805f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612d93578385612d96565b84845b91509150858282604051602001612dae929190614025565b60405160208183030381529060405280519060200120604051602001612dd5929190614117565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612e065782612e08565b815b905092915050565b5f808284612e1e9190613c6c565b905083811015612e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5a906141a2565b60405180910390fd5b8091505092915050565b5f612eae83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612963565b905092915050565b5f8083118290612efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef39190612fa1565b60405180910390fd5b505f8385612f0a9190613557565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612f4e578082015181840152602081019050612f33565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612f7382612f17565b612f7d8185612f21565b9350612f8d818560208601612f31565b612f9681612f59565b840191505092915050565b5f6020820190508181035f830152612fb98184612f69565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612fee82612fc5565b9050919050565b612ffe81612fe4565b8114613008575f80fd5b50565b5f8135905061301981612ff5565b92915050565b5f819050919050565b6130318161301f565b811461303b575f80fd5b50565b5f8135905061304c81613028565b92915050565b5f806040838503121561306857613067612fc1565b5b5f6130758582860161300b565b92505060206130868582860161303e565b9150509250929050565b5f8115159050919050565b6130a481613090565b82525050565b5f6020820190506130bd5f83018461309b565b92915050565b5f602082840312156130d8576130d7612fc1565b5b5f6130e58482850161303e565b91505092915050565b6130f78161301f565b82525050565b5f6020820190506131105f8301846130ee565b92915050565b61311f81613090565b8114613129575f80fd5b50565b5f8135905061313a81613116565b92915050565b5f6020828403121561315557613154612fc1565b5b5f6131628482850161312c565b91505092915050565b5f805f6060848603121561318257613181612fc1565b5b5f61318f8682870161300b565b93505060206131a08682870161300b565b92505060406131b18682870161303e565b9150509250925092565b5f60ff82169050919050565b6131d0816131bb565b82525050565b5f6020820190506131e95f8301846131c7565b92915050565b5f6020828403121561320457613203612fc1565b5b5f6132118482850161300b565b91505092915050565b61322381612fe4565b82525050565b5f60208201905061323c5f83018461321a565b92915050565b5f806040838503121561325857613257612fc1565b5b5f6132658582860161300b565b92505060206132768582860161300b565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6132b4602083612f21565b91506132bf82613280565b602082019050919050565b5f6020820190508181035f8301526132e1816132a8565b9050919050565b5f819050919050565b5f819050919050565b5f61331461330f61330a846132e8565b6132f1565b61301f565b9050919050565b613324816132fa565b82525050565b5f60208201905061333d5f83018461331b565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156133c5578086048111156133a1576133a0613343565b5b60018516156133b05780820291505b80810290506133be85613370565b9450613385565b94509492505050565b5f826133dd5760019050613498565b816133ea575f9050613498565b8160018114613400576002811461340a57613439565b6001915050613498565b60ff84111561341c5761341b613343565b5b8360020a91508482111561343357613432613343565b5b50613498565b5060208310610133831016604e8410600b841016171561346e5782820a90508381111561346957613468613343565b5b613498565b61347b848484600161337c565b9250905081840481111561349257613491613343565b5b81810290505b9392505050565b5f6134a98261301f565b91506134b4836131bb565b92506134e17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133ce565b905092915050565b5f6134f38261301f565b91506134fe8361301f565b925082820261350c8161301f565b9150828204841483151761352357613522613343565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135618261301f565b915061356c8361301f565b92508261357c5761357b61352a565b5b828204905092915050565b5f8151905061359581613028565b92915050565b5f602082840312156135b0576135af612fc1565b5b5f6135bd84828501613587565b91505092915050565b5f6135e06135db6135d684612fc5565b6132f1565b612fc5565b9050919050565b5f6135f1826135c6565b9050919050565b5f613602826135e7565b9050919050565b613612816135f8565b82525050565b5f60408201905061362b5f830185613609565b61363860208301846130ee565b9392505050565b5f8151905061364d81613116565b92915050565b5f6020828403121561366857613667612fc1565b5b5f6136758482850161363f565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6136b2601783612f21565b91506136bd8261367e565b602082019050919050565b5f6020820190508181035f8301526136df816136a6565b9050919050565b5f815190506136f481612ff5565b92915050565b5f6020828403121561370f5761370e612fc1565b5b5f61371c848285016136e6565b91505092915050565b5f6040820190506137385f83018561321a565b613745602083018461321a565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f613780601383612f21565b915061378b8261374c565b602082019050919050565b5f6020820190508181035f8301526137ad81613774565b9050919050565b5f60c0820190506137c75f83018961321a565b6137d460208301886130ee565b6137e1604083018761331b565b6137ee606083018661331b565b6137fb608083018561321a565b61380860a08301846130ee565b979650505050505050565b5f805f6060848603121561382a57613829612fc1565b5b5f61383786828701613587565b935050602061384886828701613587565b925050604061385986828701613587565b9150509250925092565b5f6040820190506138765f83018561321a565b61388360208301846130ee565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138e4602483612f21565b91506138ef8261388a565b604082019050919050565b5f6020820190508181035f830152613911816138d8565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613972602283612f21565b915061397d82613918565b604082019050919050565b5f6020820190508181035f83015261399f81613966565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613a00602583612f21565b9150613a0b826139a6565b604082019050919050565b5f6020820190508181035f830152613a2d816139f4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a8e602383612f21565b9150613a9982613a34565b604082019050919050565b5f6020820190508181035f830152613abb81613a82565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613b1c602983612f21565b9150613b2782613ac2565b604082019050919050565b5f6020820190508181035f830152613b4981613b10565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613bd0604983612f21565b9150613bdb82613b50565b606082019050919050565b5f6020820190508181035f830152613bfd81613bc4565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c38601983612f21565b9150613c4382613c04565b602082019050919050565b5f6020820190508181035f830152613c6581613c2c565b9050919050565b5f613c768261301f565b9150613c818361301f565b9250828201905080821115613c9957613c98613343565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613cd3601a83612f21565b9150613cde82613c9f565b602082019050919050565b5f6020820190508181035f830152613d0081613cc7565b9050919050565b5f613d118261301f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d4357613d42613343565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d82601783612f21565b9150613d8d82613d4e565b602082019050919050565b5f6020820190508181035f830152613daf81613d76565b9050919050565b5f613dc08261301f565b9150613dcb8361301f565b9250828203905081811115613de357613de2613343565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e7581612fe4565b82525050565b5f613e868383613e6c565b60208301905092915050565b5f602082019050919050565b5f613ea882613e43565b613eb28185613e4d565b9350613ebd83613e5d565b805f5b83811015613eed578151613ed48882613e7b565b9750613edf83613e92565b925050600181019050613ec0565b5085935050505092915050565b5f60a082019050613f0d5f8301886130ee565b613f1a602083018761331b565b8181036040830152613f2c8186613e9e565b9050613f3b606083018561321a565b613f4860808301846130ee565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613fac602183612f21565b9150613fb782613f52565b604082019050919050565b5f6020820190508181035f830152613fd981613fa0565b9050919050565b5f8160601b9050919050565b5f613ff682613fe0565b9050919050565b5f61400782613fec565b9050919050565b61401f61401a82612fe4565b613ffd565b82525050565b5f614030828561400e565b601482019150614040828461400e565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61408e600183614050565b91506140998261405a565b600182019050919050565b5f819050919050565b5f819050919050565b6140c76140c2826140a4565b6140ad565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f614101602083614050565b915061410c826140cd565b602082019050919050565b5f61412182614082565b915061412d828561400e565b60148201915061413d82846140b6565b60208201915061414c826140f5565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61418c601b83612f21565b915061419782614158565b602082019050919050565b5f6020820190508181035f8301526141b981614180565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122052f8f1e76bccf1086c14094e0bf26de2f39d223c158896b0b80c75b634acc90e64736f6c63430008170033

Deployed Bytecode Sourcemap

3563:15435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8666:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9499:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15889:196;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4875:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15007:119;;;;;;;;;;;;;:::i;:::-;;14523:474;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8943:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9668:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8852:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16093;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15518:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18647:348;;;;;;;;;;;;;:::i;:::-;;15428:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15134:187;;;;;;;;;;;;;:::i;:::-;;9046:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2644:148;;;;;;;;;;;;;:::i;:::-;;4680:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15615:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2430:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4743:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8757:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9173:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4808:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16188:1664;;;;;;;;;;;;;:::i;:::-;;9348:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18384:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8666:83;8703:13;8736:5;;;;;;;;;;;;;;;;;8729:12;;8666:83;:::o;9499:161::-;9574:4;9591:39;9600:12;:10;:12::i;:::-;9614:7;9623:6;9591:8;:39::i;:::-;9648:4;9641:11;;9499:161;;;;:::o;15889:196::-;15993:10;;;;;;;;;;;15979:24;;:12;:10;:12::i;:::-;:24;;;15971:33;;;;;;16035:4;16015:17;:24;;;;16064:4;16050:11;:18;;;;15889:196;:::o;4875:54::-;;;;:::o;15007:119::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15080:1:::1;15065:12;:16;;;;15097:21;15116:1;15097:21;;;;;;:::i;:::-;;;;;;;;15007:119::o:0;14523:474::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14591:5:::1;14587:143;;;14613:20;14650:3;14646:1;4494;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;14636:11;;;;:::i;:::-;:17;;;;:::i;:::-;14613:40;;14668:50;14678:10;;;;;;;;;;;14698:4;14705:12;14668:9;:50::i;:::-;14598:132;14587:143;14787:3;14782:2;14762:17;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;14742:17;:48;;;;14834:3;14829:2;14815:11;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;14801:11;:36;;;;4494:1;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;14848:12;:22;;;;4494:1;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;14881:14;:24;;;;14939:5;14916:20;;:28;;;;;;;;;;;;;;;;;;14962:27;4494:1;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;14962:27;;;;;;:::i;:::-;;;;;;;;14523:474:::0;:::o;8943:95::-;8996:7;4494:1;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;9016:14;;8943:95;:::o;9668:313::-;9766:4;9783:36;9793:6;9801:9;9812:6;9783:9;:36::i;:::-;9830:121;9839:6;9847:12;:10;:12::i;:::-;9861:89;9899:6;9861:89;;;;;;;;;;;;;;;;;:11;:19;9873:6;9861:19;;;;;;;;;;;;;;;:33;9881:12;:10;:12::i;:::-;9861:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;9830:8;:121::i;:::-;9969:4;9962:11;;9668:313;;;;;:::o;8852:83::-;8893:5;4494:1;8911:16;;8852:83;:::o;16093:::-;16140:4;16161;:7;16166:1;16161:7;;;;;;;;;;;;;;;;;;;;;;;;;16154:14;;16093:83;;;:::o;15518:89::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15594:5:::1;15579:4;:12;15584:6;15579:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;15518:89:::0;:::o;18647:348::-;18711:10;;;;;;;;;;;18697:24;;:12;:10;:12::i;:::-;:24;;;18689:33;;;;;;18733:20;18754:24;18772:4;18754:9;:24::i;:::-;18733:45;;18805:1;18792:12;:14;18789:73;;;18820:30;18837:12;18820:16;:30::i;:::-;18789:73;18872:18;18891:21;18872:40;;18937:1;18926:10;:12;18923:65;;;18952:24;18965:10;18952:12;:24::i;:::-;18923:65;18678:317;;18647:348::o;15428:82::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15498:4:::1;15486;:9;15491:3;15486:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;15428:82:::0;:::o;15134:187::-;15198:10;;;;;;;;;;;15184:24;;:12;:10;:12::i;:::-;:24;;;15176:33;;;;;;15220:26;15249:21;15220:50;;15281:32;15294:18;15281:12;:32::i;:::-;15165:156;15134:187::o;9046:119::-;9112:7;9139:9;:18;9149:7;9139:18;;;;;;;;;;;;;;;;9132:25;;9046:119;;;:::o;2644:148::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2751:1:::1;2714:40;;2735:6;::::0;::::1;;;;;;;;2714:40;;;;;;;;;;;;2782:1;2765:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2644:148::o:0;4680:56::-;;;;:::o;15615:266::-;15713:10;;;;;;;;;;;15699:24;;:12;:10;:12::i;:::-;:24;;;15691:33;;;;;;15735:15;15753:63;15812:3;15753:54;15799:7;15760:8;15753:26;;;15788:4;15753:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;15735:81;;15834:8;15827:25;;;15853:10;;;;;;;;;;;15865:7;15827:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15680:201;15615:266;;:::o;2430:79::-;2468:7;2495:6;;;;;;;;;;;2488:13;;2430:79;:::o;4743:58::-;;;;:::o;8757:87::-;8796:13;8829:7;;;;;;;;;;;;;;;;;8822:14;;8757:87;:::o;9173:167::-;9251:4;9268:42;9278:12;:10;:12::i;:::-;9292:9;9303:6;9268:9;:42::i;:::-;9328:4;9321:11;;9173:167;;;;:::o;4808:60::-;;;;:::o;16188:1664::-;2567:12;:10;:12::i;:::-;2557:22;;:6;;;;;;;;;;:22;;;2549:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16246:11:::1;;;;;;;;;;;16245:12;16237:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;16335:42;16298:15;;:80;;;;;;;;;;;;;;;;;;16424:15;16442;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16424:43;;16474:12;16489:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16474:37;;16518:21;16542:37;16550:7;16567:4;16574;16542:7;:37::i;:::-;16518:61;;16651:16;16718:13;16706:26;16694:38;;16808:1;16796:8;:13:::0;16792:484:::1;;16856:7;16838:37;;;16884:4;16891;16838:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16822:13;;:74;;;;;;;;;;;;;;;;;;16792:484;;;16937:13;16921;;:29;;;;;;;;;;;;;;;;;;17034:20;17111:3;17106:2;17072:4;17057:31;;;17089:13;;;;;;;;;;;17057:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;:57;;;;:::i;:::-;17034:80;;17125:19;17154:4;17147:22;;;17170:13;;;;;;;;;;;17147:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17125:59;;17218:4;17203:12;:19;:41;;;;;17240:4;17226:11;:18;17203:41;17195:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;16910:366;;16792:484;17326:58;17343:4;17358:15;;;;;;;;;;;4494:1;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;17326:8;:58::i;:::-;17419:15;;;;;;;;;;;:31;;;17458:21;17499:4;17515:24;17533:4;17515:9;:24::i;:::-;17550:1;17562::::0;17574:7:::1;:5;:7::i;:::-;17592:15;17419:195;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17674:13;;;;;;;;;;;17667:29;;;17705:15;;;;;;;;;;;17723:14;17667:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17773:4;17759:11;;:18;;;;;;;;;;;;;;;;;;17802:4;17788:11;;:18;;;;;;;;;;;;;;;;;;17840:4;17817:20;;:27;;;;;;;;;;;;;;;;;;16230:1622;;;;16188:1664::o:0;9348:143::-;9429:7;9456:11;:18;9468:5;9456:18;;;;;;;;;;;;;;;:27;9475:7;9456:27;;;;;;;;;;;;;;;;9449:34;;9348:143;;;;:::o;18384:218::-;18459:10;;;;;;;;;;;18445:24;;:12;:10;:12::i;:::-;:24;;;18437:33;;;;;;18496:12;;18487:7;:21;;:47;;;;;18521:13;;18512:7;:22;;18487:47;18479:56;;;;;;18557:7;18544:12;:20;;;;18587:7;18573:13;:21;;;;18384:218;:::o;185:98::-;238:7;265:10;258:17;;185:98;:::o;9989:335::-;10099:1;10082:19;;:5;:19;;;10074:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10180:1;10161:21;;:7;:21;;;10153:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10262:6;10232:11;:18;10244:5;10232:18;;;;;;;;;;;;;;;:27;10251:7;10232:27;;;;;;;;;;;;;;;:36;;;;10300:7;10284:32;;10293:5;10284:32;;;10309:6;10284:32;;;;;;:::i;:::-;;;;;;;;9989:335;;;:::o;10332:3584::-;10432:1;10416:18;;:4;:18;;;10408:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10505:1;10491:16;;:2;:16;;;10483:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10571:1;10562:6;:10;10554:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10627:17;10667:7;:5;:7::i;:::-;10659:15;;:4;:15;;;;:32;;;;;10684:7;:5;:7::i;:::-;10678:13;;:2;:13;;;;10659:32;10655:2922;;;10713:4;:10;10718:4;10713:10;;;;;;;;;;;;;;;;;;;;;;;;;10712:11;:24;;;;;10728:4;:8;10733:2;10728:8;;;;;;;;;;;;;;;;;;;;;;;;;10727:9;10712:24;:44;;;;;10741:4;:15;10746:9;10741:15;;;;;;;;;;;;;;;;;;;;;;;;;10740:16;10712:44;10704:53;;;;;;10774:20;;;;;;;;;;;10770:512;;;10839:7;:5;:7::i;:::-;10833:13;;:2;:13;;;;:64;;;;;10881:15;;;;;;;;;;;10867:30;;:2;:30;;;;10833:64;:113;;;;;10932:13;;;;;;;;;;;10918:28;;:2;:28;;;;10833:113;10811:460;;;11053:12;11011:28;:39;11040:9;11011:39;;;;;;;;;;;;;;;;:54;10981:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;11243:12;11201:28;:39;11230:9;11201:39;;;;;;;;;;;;;;;:54;;;;10811:460;10770:512;11311:1;11298:9;;:14;11294:141;;11341:82;11419:3;11341:73;11365:15;;11353:9;;:27;11352:61;;11399:14;;11352:61;;;11384:12;;11352:61;11341:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;11329:94;;11294:141;11461:1;11449:9;;:13;11445:91;;;11491:33;11520:3;11491:24;11502:12;;11491:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;11479:45;;11445:91;11560:13;;;;;;;;;;;11552:21;;:4;:21;;;:55;;;;;11591:15;;;;;;;;;;;11577:30;;:2;:30;;;;11552:55;:82;;;;;11612:18;:22;11631:2;11612:22;;;;;;;;;;;;;;;;;;;;;;;;;11611:23;11552:82;11548:404;;;11669:12;;11659:6;:22;;11651:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11760:14;;11750:6;11734:13;11744:2;11734:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;11726:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11832:82;11910:3;11832:73;11856:15;;11844:9;;:27;11843:61;;11890:14;;11843:61;;;11875:12;;11843:61;11832:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;11820:94;;11929:9;;:11;;;;;;;;;:::i;:::-;;;;;;11548:404;11974:13;;;;;;;;;;;11968:19;;:2;:19;;;:44;;;;;12007:4;11991:21;;:4;:21;;;;11968:44;11964:174;;;12041:85;12122:3;12041:76;12065:16;;12053:9;;:28;12052:64;;12101:15;;12052:64;;;12085:13;;12052:64;12041:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;12029:97;;11964:174;12150:28;12181:24;12199:4;12181:9;:24::i;:::-;12150:55;;12223:6;;;;;;;;;;12222:7;:30;;;;;12239:13;;;;;;;;;;;12233:19;;:2;:19;;;12222:30;:45;;;;;12256:11;;;;;;;;;;;12222:45;:89;;;;;12294:17;;12271:20;:40;12222:89;:123;;;;;12327:18;;12315:9;;:30;12222:123;12218:1352;;;12362:24;12389:42;4494:1;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;12389:29;12414:3;12389:20;:24;;:29;;;;:::i;:::-;:33;;:42;;;;:::i;:::-;12362:69;;12471:1;12452:16;:20;12448:616;;;12513:17;12493;:37;;;;12563:17;12549:11;:31;;;;12448:616;;;12625:1;12606:16;:20;12602:462;;;12682:5;12677:2;4494:1;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;12667:12;;;;:::i;:::-;:20;;;;:::i;:::-;12647:17;:40;;;;12744:5;12739:2;4494:1;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;12729:12;;;;:::i;:::-;:20;;;;:::i;:::-;12715:11;:34;;;;12602:462;;;12794:2;12775:16;:21;12771:293;;;12851:4;12847:1;4494;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;12837:11;;;;:::i;:::-;:18;;;;:::i;:::-;12817:17;:38;;;;12910:4;12906:1;4494;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;12896:11;;;;:::i;:::-;:18;;;;:::i;:::-;12882:11;:32;;;;12771:293;;;12989:3;12985:1;4494;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;12975:11;;;;:::i;:::-;:17;;;;:::i;:::-;12955;:37;;;;13045:3;13041:1;4494;4552:2;:13;;;;:::i;:::-;4537:12;:28;;;;:::i;:::-;13031:11;;;;:::i;:::-;:17;;;;:::i;:::-;13017:11;:31;;;;12771:293;12602:462;12448:616;13099:13;;13084:12;:28;13080:82;;;13145:1;13133:9;:13;;;;13080:82;13198:1;13186:9;;:13;13178:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13244:69;13261:51;13265:6;13273:38;13277:20;13299:11;;13273:3;:38::i;:::-;13261:3;:51::i;:::-;13244:16;:69::i;:::-;13328:26;13357:21;13328:50;;13418:1;13397:18;:22;13393:95;;;13440:32;13453:18;13440:12;:32::i;:::-;13393:95;13504:9;;:11;;;;;;;;;:::i;:::-;;;;;;13546:12;13530:13;:28;;;;12347:1223;;12218:1352;10693:2884;10655:2922;13601:1;13589:9;:13;13585:160;;;13642:39;13671:9;13642;:24;13660:4;13642:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13615:9;:24;13633:4;13615:24;;;;;;;;;;;;;;;:66;;;;13720:4;13697:40;;13706:4;13697:40;;;13727:9;13697:40;;;;;;:::i;:::-;;;;;;;;13585:160;13769:27;13789:6;13769:9;:15;13779:4;13769:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;13751:9;:15;13761:4;13751:15;;;;;;;;;;;;;;;:45;;;;13819:40;13837:21;13848:9;13837:6;:10;;:21;;;;:::i;:::-;13819:9;:13;13829:2;13819:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;13803:9;:13;13813:2;13803:13;;;;;;;;;;;;;;;:56;;;;13886:2;13871:41;;13880:4;13871:41;;;13890:21;13901:9;13890:6;:10;;:21;;;;:::i;:::-;13871:41;;;;;;:::i;:::-;;;;;;;;10401:3515;10332:3584;;;:::o;1322:190::-;1408:7;1441:1;1436;:6;;1444:12;1428:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1468:9;1484:1;1480;:5;;;;:::i;:::-;1468:17;;1503:1;1496:8;;;1322:190;;;;;:::o;14032:483::-;5390:4;5381:6;;:13;;;;;;;;;;;;;;;;;;14110:21:::1;14148:1;14134:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14110:40;;14179:4;14161;14166:1;14161:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14205:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14195:4;14200:1;14195:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;14238:62;14255:4;14270:15;;;;;;;;;;;14288:11;14238:8;:62::i;:::-;14311:15;;;;;;;;;;;:66;;;14392:11;14418:1;14434:4;14461;14481:15;14311:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;14099:416;5426:5:::0;5417:6;;:14;;;;;;;;;;;;;;;;;;14032:483;:::o;15329:92::-;15386:10;;;;;;;;;;;:19;;:27;15406:6;15386:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15329:92;:::o;1520:246::-;1578:7;1607:1;1602;:6;1598:47;;1632:1;1625:8;;;;1598:47;1655:9;1671:1;1667;:5;;;;:::i;:::-;1655:17;;1700:1;1695;1691;:5;;;;:::i;:::-;:10;1683:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1757:1;1750:8;;;1520:246;;;;;:::o;1774:132::-;1832:7;1859:39;1863:1;1866;1859:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1852:46;;1774:132;;;;:::o;17860:509::-;17948:12;17974:14;17990;18017:6;18008:15;;:6;:15;;;:53;;18046:6;18054;18008:53;;;18027:6;18035;18008:53;17973:88;;;;18163:7;18212:6;18220;18195:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18185:43;;;;;;18110:247;;;;;;;;;:::i;:::-;;;;;;;;;;;;;18100:258;;;;;;18095:264;;18072:289;;17962:407;;17860:509;;;;;:::o;13926:98::-;13983:7;14010:1;14008;:3;14007:9;;14015:1;14007:9;;;14013:1;14007:9;14000:16;;13926:98;;;;:::o;991:179::-;1049:7;1069:9;1085:1;1081;:5;;;;:::i;:::-;1069:17;;1110:1;1105;:6;;1097:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1161:1;1154:8;;;991:179;;;;:::o;1178:136::-;1236:7;1263:43;1267:1;1270;1263:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1256:50;;1178:136;;;;:::o;1914:189::-;2000:7;2032:1;2028;:5;2035:12;2020:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2059:9;2075:1;2071;:5;;;;:::i;:::-;2059:17;;2094:1;2087:8;;;1914:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:116::-;4203:21;4218:5;4203:21;:::i;:::-;4196:5;4193:32;4183:60;;4239:1;4236;4229:12;4183:60;4133:116;:::o;4255:133::-;4298:5;4336:6;4323:20;4314:29;;4352:30;4376:5;4352:30;:::i;:::-;4255:133;;;;:::o;4394:323::-;4450:6;4499:2;4487:9;4478:7;4474:23;4470:32;4467:119;;;4505:79;;:::i;:::-;4467:119;4625:1;4650:50;4692:7;4683:6;4672:9;4668:22;4650:50;:::i;:::-;4640:60;;4596:114;4394:323;;;;:::o;4723:619::-;4800:6;4808;4816;4865:2;4853:9;4844:7;4840:23;4836:32;4833:119;;;4871:79;;:::i;:::-;4833:119;4991:1;5016:53;5061:7;5052:6;5041:9;5037:22;5016:53;:::i;:::-;5006:63;;4962:117;5118:2;5144:53;5189:7;5180:6;5169:9;5165:22;5144:53;:::i;:::-;5134:63;;5089:118;5246:2;5272:53;5317:7;5308:6;5297:9;5293:22;5272:53;:::i;:::-;5262:63;;5217:118;4723:619;;;;;:::o;5348:86::-;5383:7;5423:4;5416:5;5412:16;5401:27;;5348:86;;;:::o;5440:112::-;5523:22;5539:5;5523:22;:::i;:::-;5518:3;5511:35;5440:112;;:::o;5558:214::-;5647:4;5685:2;5674:9;5670:18;5662:26;;5698:67;5762:1;5751:9;5747:17;5738:6;5698:67;:::i;:::-;5558:214;;;;:::o;5778:329::-;5837:6;5886:2;5874:9;5865:7;5861:23;5857:32;5854:119;;;5892:79;;:::i;:::-;5854:119;6012:1;6037:53;6082:7;6073:6;6062:9;6058:22;6037:53;:::i;:::-;6027:63;;5983:117;5778:329;;;;:::o;6113:118::-;6200:24;6218:5;6200:24;:::i;:::-;6195:3;6188:37;6113:118;;:::o;6237:222::-;6330:4;6368:2;6357:9;6353:18;6345:26;;6381:71;6449:1;6438:9;6434:17;6425:6;6381:71;:::i;:::-;6237:222;;;;:::o;6465:474::-;6533:6;6541;6590:2;6578:9;6569:7;6565:23;6561:32;6558:119;;;6596:79;;:::i;:::-;6558:119;6716:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;:::i;:::-;6731:63;;6687:117;6843:2;6869:53;6914:7;6905:6;6894:9;6890:22;6869:53;:::i;:::-;6859:63;;6814:118;6465:474;;;;;:::o;6945:182::-;7085:34;7081:1;7073:6;7069:14;7062:58;6945:182;:::o;7133:366::-;7275:3;7296:67;7360:2;7355:3;7296:67;:::i;:::-;7289:74;;7372:93;7461:3;7372:93;:::i;:::-;7490:2;7485:3;7481:12;7474:19;;7133:366;;;:::o;7505:419::-;7671:4;7709:2;7698:9;7694:18;7686:26;;7758:9;7752:4;7748:20;7744:1;7733:9;7729:17;7722:47;7786:131;7912:4;7786:131;:::i;:::-;7778:139;;7505:419;;;:::o;7930:85::-;7975:7;8004:5;7993:16;;7930:85;;;:::o;8021:60::-;8049:3;8070:5;8063:12;;8021:60;;;:::o;8087:158::-;8145:9;8178:61;8196:42;8205:32;8231:5;8205:32;:::i;:::-;8196:42;:::i;:::-;8178:61;:::i;:::-;8165:74;;8087:158;;;:::o;8251:147::-;8346:45;8385:5;8346:45;:::i;:::-;8341:3;8334:58;8251:147;;:::o;8404:238::-;8505:4;8543:2;8532:9;8528:18;8520:26;;8556:79;8632:1;8621:9;8617:17;8608:6;8556:79;:::i;:::-;8404:238;;;;:::o;8648:180::-;8696:77;8693:1;8686:88;8793:4;8790:1;8783:15;8817:4;8814:1;8807:15;8834:102;8876:8;8923:5;8920:1;8916:13;8895:34;;8834:102;;;:::o;8942:848::-;9003:5;9010:4;9034:6;9025:15;;9058:5;9049:14;;9072:712;9093:1;9083:8;9080:15;9072:712;;;9188:4;9183:3;9179:14;9173:4;9170:24;9167:50;;;9197:18;;:::i;:::-;9167:50;9247:1;9237:8;9233:16;9230:451;;;9662:4;9655:5;9651:16;9642:25;;9230:451;9712:4;9706;9702:15;9694:23;;9742:32;9765:8;9742:32;:::i;:::-;9730:44;;9072:712;;;8942:848;;;;;;;:::o;9796:1073::-;9850:5;10041:8;10031:40;;10062:1;10053:10;;10064:5;;10031:40;10090:4;10080:36;;10107:1;10098:10;;10109:5;;10080:36;10176:4;10224:1;10219:27;;;;10260:1;10255:191;;;;10169:277;;10219:27;10237:1;10228:10;;10239:5;;;10255:191;10300:3;10290:8;10287:17;10284:43;;;10307:18;;:::i;:::-;10284:43;10356:8;10353:1;10349:16;10340:25;;10391:3;10384:5;10381:14;10378:40;;;10398:18;;:::i;:::-;10378:40;10431:5;;;10169:277;;10555:2;10545:8;10542:16;10536:3;10530:4;10527:13;10523:36;10505:2;10495:8;10492:16;10487:2;10481:4;10478:12;10474:35;10458:111;10455:246;;;10611:8;10605:4;10601:19;10592:28;;10646:3;10639:5;10636:14;10633:40;;;10653:18;;:::i;:::-;10633:40;10686:5;;10455:246;10726:42;10764:3;10754:8;10748:4;10745:1;10726:42;:::i;:::-;10711:57;;;;10800:4;10795:3;10791:14;10784:5;10781:25;10778:51;;;10809:18;;:::i;:::-;10778:51;10858:4;10851:5;10847:16;10838:25;;9796:1073;;;;;;:::o;10875:281::-;10933:5;10957:23;10975:4;10957:23;:::i;:::-;10949:31;;11001:25;11017:8;11001:25;:::i;:::-;10989:37;;11045:104;11082:66;11072:8;11066:4;11045:104;:::i;:::-;11036:113;;10875:281;;;;:::o;11162:410::-;11202:7;11225:20;11243:1;11225:20;:::i;:::-;11220:25;;11259:20;11277:1;11259:20;:::i;:::-;11254:25;;11314:1;11311;11307:9;11336:30;11354:11;11336:30;:::i;:::-;11325:41;;11515:1;11506:7;11502:15;11499:1;11496:22;11476:1;11469:9;11449:83;11426:139;;11545:18;;:::i;:::-;11426:139;11210:362;11162:410;;;;:::o;11578:180::-;11626:77;11623:1;11616:88;11723:4;11720:1;11713:15;11747:4;11744:1;11737:15;11764:185;11804:1;11821:20;11839:1;11821:20;:::i;:::-;11816:25;;11855:20;11873:1;11855:20;:::i;:::-;11850:25;;11894:1;11884:35;;11899:18;;:::i;:::-;11884:35;11941:1;11938;11934:9;11929:14;;11764:185;;;;:::o;11955:143::-;12012:5;12043:6;12037:13;12028:22;;12059:33;12086:5;12059:33;:::i;:::-;11955:143;;;;:::o;12104:351::-;12174:6;12223:2;12211:9;12202:7;12198:23;12194:32;12191:119;;;12229:79;;:::i;:::-;12191:119;12349:1;12374:64;12430:7;12421:6;12410:9;12406:22;12374:64;:::i;:::-;12364:74;;12320:128;12104:351;;;;:::o;12461:142::-;12511:9;12544:53;12562:34;12571:24;12589:5;12571:24;:::i;:::-;12562:34;:::i;:::-;12544:53;:::i;:::-;12531:66;;12461:142;;;:::o;12609:126::-;12659:9;12692:37;12723:5;12692:37;:::i;:::-;12679:50;;12609:126;;;:::o;12741:134::-;12799:9;12832:37;12863:5;12832:37;:::i;:::-;12819:50;;12741:134;;;:::o;12881:147::-;12976:45;13015:5;12976:45;:::i;:::-;12971:3;12964:58;12881:147;;:::o;13034:348::-;13163:4;13201:2;13190:9;13186:18;13178:26;;13214:79;13290:1;13279:9;13275:17;13266:6;13214:79;:::i;:::-;13303:72;13371:2;13360:9;13356:18;13347:6;13303:72;:::i;:::-;13034:348;;;;;:::o;13388:137::-;13442:5;13473:6;13467:13;13458:22;;13489:30;13513:5;13489:30;:::i;:::-;13388:137;;;;:::o;13531:345::-;13598:6;13647:2;13635:9;13626:7;13622:23;13618:32;13615:119;;;13653:79;;:::i;:::-;13615:119;13773:1;13798:61;13851:7;13842:6;13831:9;13827:22;13798:61;:::i;:::-;13788:71;;13744:125;13531:345;;;;:::o;13882:173::-;14022:25;14018:1;14010:6;14006:14;13999:49;13882:173;:::o;14061:366::-;14203:3;14224:67;14288:2;14283:3;14224:67;:::i;:::-;14217:74;;14300:93;14389:3;14300:93;:::i;:::-;14418:2;14413:3;14409:12;14402:19;;14061:366;;;:::o;14433:419::-;14599:4;14637:2;14626:9;14622:18;14614:26;;14686:9;14680:4;14676:20;14672:1;14661:9;14657:17;14650:47;14714:131;14840:4;14714:131;:::i;:::-;14706:139;;14433:419;;;:::o;14858:143::-;14915:5;14946:6;14940:13;14931:22;;14962:33;14989:5;14962:33;:::i;:::-;14858:143;;;;:::o;15007:351::-;15077:6;15126:2;15114:9;15105:7;15101:23;15097:32;15094:119;;;15132:79;;:::i;:::-;15094:119;15252:1;15277:64;15333:7;15324:6;15313:9;15309:22;15277:64;:::i;:::-;15267:74;;15223:128;15007:351;;;;:::o;15364:332::-;15485:4;15523:2;15512:9;15508:18;15500:26;;15536:71;15604:1;15593:9;15589:17;15580:6;15536:71;:::i;:::-;15617:72;15685:2;15674:9;15670:18;15661:6;15617:72;:::i;:::-;15364:332;;;;;:::o;15702:169::-;15842:21;15838:1;15830:6;15826:14;15819:45;15702:169;:::o;15877:366::-;16019:3;16040:67;16104:2;16099:3;16040:67;:::i;:::-;16033:74;;16116:93;16205:3;16116:93;:::i;:::-;16234:2;16229:3;16225:12;16218:19;;15877:366;;;:::o;16249:419::-;16415:4;16453:2;16442:9;16438:18;16430:26;;16502:9;16496:4;16492:20;16488:1;16477:9;16473:17;16466:47;16530:131;16656:4;16530:131;:::i;:::-;16522:139;;16249:419;;;:::o;16674:807::-;16923:4;16961:3;16950:9;16946:19;16938:27;;16975:71;17043:1;17032:9;17028:17;17019:6;16975:71;:::i;:::-;17056:72;17124:2;17113:9;17109:18;17100:6;17056:72;:::i;:::-;17138:80;17214:2;17203:9;17199:18;17190:6;17138:80;:::i;:::-;17228;17304:2;17293:9;17289:18;17280:6;17228:80;:::i;:::-;17318:73;17386:3;17375:9;17371:19;17362:6;17318:73;:::i;:::-;17401;17469:3;17458:9;17454:19;17445:6;17401:73;:::i;:::-;16674:807;;;;;;;;;:::o;17487:663::-;17575:6;17583;17591;17640:2;17628:9;17619:7;17615:23;17611:32;17608:119;;;17646:79;;:::i;:::-;17608:119;17766:1;17791:64;17847:7;17838:6;17827:9;17823:22;17791:64;:::i;:::-;17781:74;;17737:128;17904:2;17930:64;17986:7;17977:6;17966:9;17962:22;17930:64;:::i;:::-;17920:74;;17875:129;18043:2;18069:64;18125:7;18116:6;18105:9;18101:22;18069:64;:::i;:::-;18059:74;;18014:129;17487:663;;;;;:::o;18156:332::-;18277:4;18315:2;18304:9;18300:18;18292:26;;18328:71;18396:1;18385:9;18381:17;18372:6;18328:71;:::i;:::-;18409:72;18477:2;18466:9;18462:18;18453:6;18409:72;:::i;:::-;18156:332;;;;;:::o;18494:223::-;18634:34;18630:1;18622:6;18618:14;18611:58;18703:6;18698:2;18690:6;18686:15;18679:31;18494:223;:::o;18723:366::-;18865:3;18886:67;18950:2;18945:3;18886:67;:::i;:::-;18879:74;;18962:93;19051:3;18962:93;:::i;:::-;19080:2;19075:3;19071:12;19064:19;;18723:366;;;:::o;19095:419::-;19261:4;19299:2;19288:9;19284:18;19276:26;;19348:9;19342:4;19338:20;19334:1;19323:9;19319:17;19312:47;19376:131;19502:4;19376:131;:::i;:::-;19368:139;;19095:419;;;:::o;19520:221::-;19660:34;19656:1;19648:6;19644:14;19637:58;19729:4;19724:2;19716:6;19712:15;19705:29;19520:221;:::o;19747:366::-;19889:3;19910:67;19974:2;19969:3;19910:67;:::i;:::-;19903:74;;19986:93;20075:3;19986:93;:::i;:::-;20104:2;20099:3;20095:12;20088:19;;19747:366;;;:::o;20119:419::-;20285:4;20323:2;20312:9;20308:18;20300:26;;20372:9;20366:4;20362:20;20358:1;20347:9;20343:17;20336:47;20400:131;20526:4;20400:131;:::i;:::-;20392:139;;20119:419;;;:::o;20544:224::-;20684:34;20680:1;20672:6;20668:14;20661:58;20753:7;20748:2;20740:6;20736:15;20729:32;20544:224;:::o;20774:366::-;20916:3;20937:67;21001:2;20996:3;20937:67;:::i;:::-;20930:74;;21013:93;21102:3;21013:93;:::i;:::-;21131:2;21126:3;21122:12;21115:19;;20774:366;;;:::o;21146:419::-;21312:4;21350:2;21339:9;21335:18;21327:26;;21399:9;21393:4;21389:20;21385:1;21374:9;21370:17;21363:47;21427:131;21553:4;21427:131;:::i;:::-;21419:139;;21146:419;;;:::o;21571:222::-;21711:34;21707:1;21699:6;21695:14;21688:58;21780:5;21775:2;21767:6;21763:15;21756:30;21571:222;:::o;21799:366::-;21941:3;21962:67;22026:2;22021:3;21962:67;:::i;:::-;21955:74;;22038:93;22127:3;22038:93;:::i;:::-;22156:2;22151:3;22147:12;22140:19;;21799:366;;;:::o;22171:419::-;22337:4;22375:2;22364:9;22360:18;22352:26;;22424:9;22418:4;22414:20;22410:1;22399:9;22395:17;22388:47;22452:131;22578:4;22452:131;:::i;:::-;22444:139;;22171:419;;;:::o;22596:228::-;22736:34;22732:1;22724:6;22720:14;22713:58;22805:11;22800:2;22792:6;22788:15;22781:36;22596:228;:::o;22830:366::-;22972:3;22993:67;23057:2;23052:3;22993:67;:::i;:::-;22986:74;;23069:93;23158:3;23069:93;:::i;:::-;23187:2;23182:3;23178:12;23171:19;;22830:366;;;:::o;23202:419::-;23368:4;23406:2;23395:9;23391:18;23383:26;;23455:9;23449:4;23445:20;23441:1;23430:9;23426:17;23419:47;23483:131;23609:4;23483:131;:::i;:::-;23475:139;;23202:419;;;:::o;23627:297::-;23767:34;23763:1;23755:6;23751:14;23744:58;23836:34;23831:2;23823:6;23819:15;23812:59;23905:11;23900:2;23892:6;23888:15;23881:36;23627:297;:::o;23930:366::-;24072:3;24093:67;24157:2;24152:3;24093:67;:::i;:::-;24086:74;;24169:93;24258:3;24169:93;:::i;:::-;24287:2;24282:3;24278:12;24271:19;;23930:366;;;:::o;24302:419::-;24468:4;24506:2;24495:9;24491:18;24483:26;;24555:9;24549:4;24545:20;24541:1;24530:9;24526:17;24519:47;24583:131;24709:4;24583:131;:::i;:::-;24575:139;;24302:419;;;:::o;24727:175::-;24867:27;24863:1;24855:6;24851:14;24844:51;24727:175;:::o;24908:366::-;25050:3;25071:67;25135:2;25130:3;25071:67;:::i;:::-;25064:74;;25147:93;25236:3;25147:93;:::i;:::-;25265:2;25260:3;25256:12;25249:19;;24908:366;;;:::o;25280:419::-;25446:4;25484:2;25473:9;25469:18;25461:26;;25533:9;25527:4;25523:20;25519:1;25508:9;25504:17;25497:47;25561:131;25687:4;25561:131;:::i;:::-;25553:139;;25280:419;;;:::o;25705:191::-;25745:3;25764:20;25782:1;25764:20;:::i;:::-;25759:25;;25798:20;25816:1;25798:20;:::i;:::-;25793:25;;25841:1;25838;25834:9;25827:16;;25862:3;25859:1;25856:10;25853:36;;;25869:18;;:::i;:::-;25853:36;25705:191;;;;:::o;25902:176::-;26042:28;26038:1;26030:6;26026:14;26019:52;25902:176;:::o;26084:366::-;26226:3;26247:67;26311:2;26306:3;26247:67;:::i;:::-;26240:74;;26323:93;26412:3;26323:93;:::i;:::-;26441:2;26436:3;26432:12;26425:19;;26084:366;;;:::o;26456:419::-;26622:4;26660:2;26649:9;26645:18;26637:26;;26709:9;26703:4;26699:20;26695:1;26684:9;26680:17;26673:47;26737:131;26863:4;26737:131;:::i;:::-;26729:139;;26456:419;;;:::o;26881:233::-;26920:3;26943:24;26961:5;26943:24;:::i;:::-;26934:33;;26989:66;26982:5;26979:77;26976:103;;27059:18;;:::i;:::-;26976:103;27106:1;27099:5;27095:13;27088:20;;26881:233;;;:::o;27120:173::-;27260:25;27256:1;27248:6;27244:14;27237:49;27120:173;:::o;27299:366::-;27441:3;27462:67;27526:2;27521:3;27462:67;:::i;:::-;27455:74;;27538:93;27627:3;27538:93;:::i;:::-;27656:2;27651:3;27647:12;27640:19;;27299:366;;;:::o;27671:419::-;27837:4;27875:2;27864:9;27860:18;27852:26;;27924:9;27918:4;27914:20;27910:1;27899:9;27895:17;27888:47;27952:131;28078:4;27952:131;:::i;:::-;27944:139;;27671:419;;;:::o;28096:194::-;28136:4;28156:20;28174:1;28156:20;:::i;:::-;28151:25;;28190:20;28208:1;28190:20;:::i;:::-;28185:25;;28234:1;28231;28227:9;28219:17;;28258:1;28252:4;28249:11;28246:37;;;28263:18;;:::i;:::-;28246:37;28096:194;;;;:::o;28296:180::-;28344:77;28341:1;28334:88;28441:4;28438:1;28431:15;28465:4;28462:1;28455:15;28482:180;28530:77;28527:1;28520:88;28627:4;28624:1;28617:15;28651:4;28648:1;28641:15;28668:114;28735:6;28769:5;28763:12;28753:22;;28668:114;;;:::o;28788:184::-;28887:11;28921:6;28916:3;28909:19;28961:4;28956:3;28952:14;28937:29;;28788:184;;;;:::o;28978:132::-;29045:4;29068:3;29060:11;;29098:4;29093:3;29089:14;29081:22;;28978:132;;;:::o;29116:108::-;29193:24;29211:5;29193:24;:::i;:::-;29188:3;29181:37;29116:108;;:::o;29230:179::-;29299:10;29320:46;29362:3;29354:6;29320:46;:::i;:::-;29398:4;29393:3;29389:14;29375:28;;29230:179;;;;:::o;29415:113::-;29485:4;29517;29512:3;29508:14;29500:22;;29415:113;;;:::o;29564:732::-;29683:3;29712:54;29760:5;29712:54;:::i;:::-;29782:86;29861:6;29856:3;29782:86;:::i;:::-;29775:93;;29892:56;29942:5;29892:56;:::i;:::-;29971:7;30002:1;29987:284;30012:6;30009:1;30006:13;29987:284;;;30088:6;30082:13;30115:63;30174:3;30159:13;30115:63;:::i;:::-;30108:70;;30201:60;30254:6;30201:60;:::i;:::-;30191:70;;30047:224;30034:1;30031;30027:9;30022:14;;29987:284;;;29991:14;30287:3;30280:10;;29688:608;;;29564:732;;;;:::o;30302:831::-;30565:4;30603:3;30592:9;30588:19;30580:27;;30617:71;30685:1;30674:9;30670:17;30661:6;30617:71;:::i;:::-;30698:80;30774:2;30763:9;30759:18;30750:6;30698:80;:::i;:::-;30825:9;30819:4;30815:20;30810:2;30799:9;30795:18;30788:48;30853:108;30956:4;30947:6;30853:108;:::i;:::-;30845:116;;30971:72;31039:2;31028:9;31024:18;31015:6;30971:72;:::i;:::-;31053:73;31121:3;31110:9;31106:19;31097:6;31053:73;:::i;:::-;30302:831;;;;;;;;:::o;31139:220::-;31279:34;31275:1;31267:6;31263:14;31256:58;31348:3;31343:2;31335:6;31331:15;31324:28;31139:220;:::o;31365:366::-;31507:3;31528:67;31592:2;31587:3;31528:67;:::i;:::-;31521:74;;31604:93;31693:3;31604:93;:::i;:::-;31722:2;31717:3;31713:12;31706:19;;31365:366;;;:::o;31737:419::-;31903:4;31941:2;31930:9;31926:18;31918:26;;31990:9;31984:4;31980:20;31976:1;31965:9;31961:17;31954:47;32018:131;32144:4;32018:131;:::i;:::-;32010:139;;31737:419;;;:::o;32162:94::-;32195:8;32243:5;32239:2;32235:14;32214:35;;32162:94;;;:::o;32262:::-;32301:7;32330:20;32344:5;32330:20;:::i;:::-;32319:31;;32262:94;;;:::o;32362:100::-;32401:7;32430:26;32450:5;32430:26;:::i;:::-;32419:37;;32362:100;;;:::o;32468:157::-;32573:45;32593:24;32611:5;32593:24;:::i;:::-;32573:45;:::i;:::-;32568:3;32561:58;32468:157;;:::o;32631:397::-;32771:3;32786:75;32857:3;32848:6;32786:75;:::i;:::-;32886:2;32881:3;32877:12;32870:19;;32899:75;32970:3;32961:6;32899:75;:::i;:::-;32999:2;32994:3;32990:12;32983:19;;33019:3;33012:10;;32631:397;;;;;:::o;33034:148::-;33136:11;33173:3;33158:18;;33034:148;;;;:::o;33188:214::-;33328:66;33324:1;33316:6;33312:14;33305:90;33188:214;:::o;33408:400::-;33568:3;33589:84;33671:1;33666:3;33589:84;:::i;:::-;33582:91;;33682:93;33771:3;33682:93;:::i;:::-;33800:1;33795:3;33791:11;33784:18;;33408:400;;;:::o;33814:77::-;33851:7;33880:5;33869:16;;33814:77;;;:::o;33897:79::-;33936:7;33965:5;33954:16;;33897:79;;;:::o;33982:157::-;34087:45;34107:24;34125:5;34107:24;:::i;:::-;34087:45;:::i;:::-;34082:3;34075:58;33982:157;;:::o;34145:214::-;34285:66;34281:1;34273:6;34269:14;34262:90;34145:214;:::o;34365:402::-;34525:3;34546:85;34628:2;34623:3;34546:85;:::i;:::-;34539:92;;34640:93;34729:3;34640:93;:::i;:::-;34758:2;34753:3;34749:12;34742:19;;34365:402;;;:::o;34773:929::-;35115:3;35137:148;35281:3;35137:148;:::i;:::-;35130:155;;35295:75;35366:3;35357:6;35295:75;:::i;:::-;35395:2;35390:3;35386:12;35379:19;;35408:75;35479:3;35470:6;35408:75;:::i;:::-;35508:2;35503:3;35499:12;35492:19;;35528:148;35672:3;35528:148;:::i;:::-;35521:155;;35693:3;35686:10;;34773:929;;;;;:::o;35708:177::-;35848:29;35844:1;35836:6;35832:14;35825:53;35708:177;:::o;35891:366::-;36033:3;36054:67;36118:2;36113:3;36054:67;:::i;:::-;36047:74;;36130:93;36219:3;36130:93;:::i;:::-;36248:2;36243:3;36239:12;36232:19;;35891:366;;;:::o;36263:419::-;36429:4;36467:2;36456:9;36452:18;36444:26;;36516:9;36510:4;36506:20;36502:1;36491:9;36487:17;36480:47;36544:131;36670:4;36544:131;:::i;:::-;36536:139;;36263:419;;;:::o

Swarm Source

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