ETH Price: $3,430.63 (-1.29%)
Gas: 4 Gwei

Token

Pikatrump (PIKT)
 

Overview

Max Total Supply

100,000,000 PIKT

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
799,999.999999999 PIKT

Value
$0.00
0xd168343da56d890656045b8530982bc13ebfd38b
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:
Pikatrump

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-06
*/

//SPDX-License-Identifier: MIT
/*
 https://PikaTrump.Vip
 https://t.me/PikaTrumpEth
 https:/X.com/PikaTrumpEth
*/
pragma solidity 0.8.21;
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address __owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed _owner, address indexed spender, uint256 value);
}
 
interface 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 WETH() external pure returns (address);
    function factory() 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);
}
 
abstract contract Auth {
    address internal _owner;
    constructor(address deployerWallet) {
        _owner = deployerWallet;
    }
    modifier onlyOwner() {
        require(msg.sender == _owner, "Only owner can call this");
        _;
    }
    function owner() public view returns (address) {
        return _owner;
    }
    function transferOwnership(address payable newOwner) external onlyOwner {
        _owner = newOwner;
        emit OwnershipTransferred(newOwner);
    }
    function renounceOwnership() external onlyOwner {
        _owner = address(0);
        emit OwnershipTransferred(address(0));
    }
    event OwnershipTransferred(address _owner);
}
 
contract Pikatrump is IERC20, Auth {
    uint8 private constant _decimals      = 9;
    uint256 private constant _totalSupply = 100000000 * (10**_decimals);
    string private constant _name         = "Pikatrump";
    string private constant _symbol       = "PIKT";
 
    uint8 private antiSnipeTax1 = 35;
    uint8 private antiSnipeTax2 = 30;
    uint8 private antiSnipeBlocks1 = 2;
    uint8 private antiSnipeBlocks2 = 3;
 
    uint8 private _buyTaxRate  = 20;
    uint8 private _sellTaxRate = 20;
 
    address payable private _walletMarketing = payable(0x32E107708f68943551bc008a8a0a2CDE88a896c0);
 
    uint256 private _launchBlock;
    uint256 private _maxTxAmount = _totalSupply * 1 / 100;
    uint256 private _maxWalletAmount = _totalSupply * 1 / 100;
    uint256 private _taxSwapMin = _totalSupply * 10 / 100000;
    uint256 private _taxSwapMax = _totalSupply * 499 / 100000;
 
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _noFees;
    mapping (address => bool) private _noLimits;
 
    address private _lpOwner;
 
    address private constant _swapRouterAddress = address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    IUniswapV2Router02 private _primarySwapRouter = IUniswapV2Router02(_swapRouterAddress);
    address private _primaryLP;
    mapping (address => bool) private _isLP;
 
    bool private _tradingOpen;
 
    bool private _inTaxSwap = false;
    modifier lockTaxSwap {
        _inTaxSwap = true;
        _;
        _inTaxSwap = false;
    }
 
    constructor() Auth(msg.sender) {
        _lpOwner = msg.sender;
 
        _balances[_owner] = _totalSupply;
        emit Transfer(address(0), _owner, _balances[_owner]);
 
        _noFees[_owner] = true;
        _noFees[address(this)] = true;
        _noFees[_swapRouterAddress] = true;
        _noFees[_walletMarketing] = true;
        _noLimits[_owner] = true;
        _noLimits[address(this)] = true;
        _noLimits[_swapRouterAddress] = true;
        _noLimits[_walletMarketing] = true;
    }
 
    receive() external payable {}
   
    function totalSupply() external pure override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }
 
    function transfer(address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(msg.sender), "Trading not open");
        return _transferFrom(msg.sender, recipient, amount);
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        require(_checkTradingOpen(sender), "Trading not open");
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] -= amount;
        }
        return _transferFrom(sender, recipient, amount);
    }
 
    function _approveRouter(uint256 _tokenAmount) internal {
        if ( _allowances[address(this)][_swapRouterAddress] < _tokenAmount ) {
            _allowances[address(this)][_swapRouterAddress] = type(uint256).max;
            emit Approval(address(this), _swapRouterAddress, type(uint256).max);
        }
    }
 
    function addLiquidity() external payable onlyOwner lockTaxSwap {
        require(_primaryLP == address(0), "LP exists");
        require(!_tradingOpen, "trading is open");
        require(msg.value > 0 || address(this).balance>0, "No ETH in contract or message");
        require(_balances[address(this)]>0, "No tokens in contract");
        _primaryLP = IUniswapV2Factory(_primarySwapRouter.factory()).createPair(address(this), _primarySwapRouter.WETH());
        _addLiquidity(_balances[address(this)], address(this).balance, false);
        _isLP[_primaryLP] = true;
    }
 
    function _addLiquidity(uint256 _tokenAmount, uint256 _ethAmountWei, bool autoburn) internal {
        address lpTokenRecipient = _lpOwner;
        if ( autoburn ) { lpTokenRecipient = address(0); }
        _approveRouter(_tokenAmount);
        _primarySwapRouter.addLiquidityETH{value: _ethAmountWei} ( address(this), _tokenAmount, 0, 0, lpTokenRecipient, block.timestamp );
    }
 
    function enableTrading() external onlyOwner {
        require(!_tradingOpen, "trading is open");
        _openTrading();
    }
 
    function _openTrading() internal {
        _tradingOpen = true;
        _launchBlock = block.number;
    }
 
    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        require(sender != address(0), "No transfers from Zero wallet");
        if (!_tradingOpen) { require(_noFees[sender] && _noLimits[sender], "Trading not open"); }
        if ( !_inTaxSwap && _isLP[recipient] ) { _swapTaxAndLiquify(); }
       
        if ( sender != address(this) && recipient != address(this) && sender != _owner ) {
            require(_checkLimits(sender, recipient, amount), "TX exceeds limits");
        }
        uint256 _taxAmount = _calculateTax(sender, recipient, amount);
        uint256 _transferAmount = amount - _taxAmount;
        _balances[sender] = _balances[sender] - amount;
        if ( _taxAmount > 0 ) { _balances[address(this)] += _taxAmount; }
        _balances[recipient] += _transferAmount;
        emit Transfer(sender, recipient, amount);
        return true;
    }
 
    function _checkLimits(address sender, address recipient, uint256 transferAmount) internal view returns (bool) {
        bool limitCheckPassed = true;
        if ( _tradingOpen && !_noLimits[sender] && !_noLimits[recipient] ) {
            if ( transferAmount > _maxTxAmount ) {
                limitCheckPassed = false;
            }
            else if ( !_isLP[recipient] && (_balances[recipient] + transferAmount > _maxWalletAmount) ) {
                limitCheckPassed = false;
            }
        }
        return limitCheckPassed;
    }
 
    function _checkTradingOpen(address sender) private view returns (bool){
        bool checkResult = false;
        if ( _tradingOpen ) { checkResult = true; }
        else if (_noFees[sender] && _noLimits[sender]) { checkResult = true; }
        return checkResult;
    }
 
    function _calculateTax(address sender, address recipient, uint256 amount) internal view returns (uint256) {
        uint256 taxAmount;
        if ( !_tradingOpen || _noFees[sender] || _noFees[recipient] ) {
            taxAmount = 0;
        } else if ( _isLP[sender] ) {
            if ( block.number >= _launchBlock + antiSnipeBlocks1 + antiSnipeBlocks2 ) {
                taxAmount = amount * _buyTaxRate / 100;
            } else if ( block.number >= _launchBlock + antiSnipeBlocks1 ) {
                taxAmount = amount * antiSnipeTax2 / 100;
            } else if ( block.number >= _launchBlock) {
                taxAmount = amount * antiSnipeTax1 / 100;
            }
        } else if ( _isLP[recipient] ) {
            taxAmount = amount * _sellTaxRate / 100;
        }
        return taxAmount;
    }
 
    function exemptFromFees(address wallet) external view returns (bool) {
        return _noFees[wallet];
    }
    function exemptFromLimits(address wallet) external view returns (bool) {
        return _noLimits[wallet];
    }
    function setExempt(address wallet, bool noFees, bool noLimits) external onlyOwner {
        if (noLimits || noFees) { require(!_isLP[wallet], "Cannot exempt LP"); }
        _noFees[ wallet ] = noFees;
        _noLimits[ wallet ] = noLimits;
    }
 
    function buyFee() external view returns(uint8) {
        return _buyTaxRate;
    }
    function sellFee() external view returns(uint8) {
        return _sellTaxRate;
    }
 
    function setFees(uint8 buy, uint8 sell) external onlyOwner {
        require(buy + sell <= 55, "Roundtrip too high");
        _buyTaxRate = buy;
        _sellTaxRate = sell;
    }  
 
    function marketingWallet() external view returns (address) {
        return _walletMarketing;
    }
 
    function updateWallet(address marketing) external onlyOwner {
        require(!_isLP[marketing], "LP cannot be tax wallet");
        _walletMarketing = payable(marketing);
        _noFees[marketing] = true;
        _noLimits[marketing] = true;
    }
 
    function maxWallet() external view returns (uint256) {
        return _maxWalletAmount;
    }
    function maxTransaction() external view returns (uint256) {
        return _maxTxAmount;
    }
 
    function swapAtMin() external view returns (uint256) {
        return _taxSwapMin;
    }
    function swapAtMax() external view returns (uint256) {
        return _taxSwapMax;
    }
 
    function setLimits(uint16 maxTransactionPermille, uint16 maxWalletPermille) external onlyOwner {
        uint256 newTxAmt = _totalSupply * maxTransactionPermille / 1000 + 1;
        require(newTxAmt >= _maxTxAmount, "tx too low");
        _maxTxAmount = newTxAmt;
        uint256 newWalletAmt = _totalSupply * maxWalletPermille / 1000 + 1;
        require(newWalletAmt >= _maxWalletAmount, "wallet too low");
        _maxWalletAmount = newWalletAmt;
    }
 
    function setTaxSwap(uint32 minValue, uint32 minDivider, uint32 maxValue, uint32 maxDivider) external onlyOwner {
        _taxSwapMin = _totalSupply * minValue / minDivider;
        _taxSwapMax = _totalSupply * maxValue / maxDivider;
        require(_taxSwapMax>=_taxSwapMin, "Min/Max error");
        require(_taxSwapMax>_totalSupply / 100000, "Max too low");
        require(_taxSwapMax<_totalSupply / 100, "Max too high");
    }
 
    function _swapTaxAndLiquify() private lockTaxSwap {
        uint256 _taxTokensAvailable = balanceOf(address(this));
 
        if ( _taxTokensAvailable >= _taxSwapMin && _tradingOpen ) {
            if ( _taxTokensAvailable >= _taxSwapMax ) { _taxTokensAvailable = _taxSwapMax; }
            uint256 _tokensToSwap = _taxTokensAvailable;
            if( _tokensToSwap > 10**_decimals ) {
                _swapTaxTokensForEth(_tokensToSwap);
            }
            uint256 _contractETHBalance = address(this).balance;
            if(_contractETHBalance > 0) { _walletMarketing.transfer(_contractETHBalance); }
        }
    }
 
    function _swapTaxTokensForEth(uint256 tokenAmt) private {
        _approveRouter(tokenAmt);
        address[] memory swappath = new address[](2);
        swappath[0] = address(this); swappath[1] = _primarySwapRouter.WETH();
        _primarySwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmt,0,swappath,address(this),block.timestamp);
    }
 
    function manualTaxSwapAndSend(uint8 swapTokenPercent, bool sendEth) external onlyOwner lockTaxSwap {
        require(swapTokenPercent <= 100, "Cannot swap more than 100%");
        uint256 tokensToSwap = balanceOf(address(this)) * swapTokenPercent / 100;
        if (tokensToSwap > 10 ** _decimals) {
            _swapTaxTokensForEth(tokensToSwap);
        }
        if (sendEth) {
            uint256 ethBalance = address(this).balance;
            require(ethBalance > 0, "No ETH");
            _walletMarketing.transfer(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"exemptFromLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"swapTokenPercent","type":"uint8"},{"internalType":"bool","name":"sendEth","type":"bool"}],"name":"manualTaxSwapAndSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"},{"internalType":"bool","name":"noFees","type":"bool"},{"internalType":"bool","name":"noLimits","type":"bool"}],"name":"setExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"maxTransactionPermille","type":"uint16"},{"internalType":"uint16","name":"maxWalletPermille","type":"uint16"}],"name":"setLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint32","name":"minValue","type":"uint32"},{"internalType":"uint32","name":"minDivider","type":"uint32"},{"internalType":"uint32","name":"maxValue","type":"uint32"},{"internalType":"uint32","name":"maxDivider","type":"uint32"}],"name":"setTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAtMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapAtMin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"inputs":[{"internalType":"address payable","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"marketing","type":"address"}],"name":"updateWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260235f60146101000a81548160ff021916908360ff160217905550601e5f60156101000a81548160ff021916908360ff16021790555060025f60166101000a81548160ff021916908360ff16021790555060035f60176101000a81548160ff021916908360ff16021790555060145f60186101000a81548160ff021916908360ff16021790555060145f60196101000a81548160ff021916908360ff1602179055507332e107708f68943551bc008a8a0a2cde88a896c060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460016009600a6200010e91906200094a565b6305f5e1006200011f91906200099a565b6200012b91906200099a565b62000137919062000a11565b600355606460016009600a6200014e91906200094a565b6305f5e1006200015f91906200099a565b6200016b91906200099a565b62000177919062000a11565b600455620186a0600a6009600a6200019091906200094a565b6305f5e100620001a191906200099a565b620001ad91906200099a565b620001b9919062000a11565b600555620186a06101f36009600a620001d391906200094a565b6305f5e100620001e491906200099a565b620001f091906200099a565b620001fc919062000a11565b600655737a250d5630b4cf539739df2c5dacb4c659f2488d600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f600f60016101000a81548160ff02191690831515021790555034801562000279575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505033600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200030b91906200094a565b6305f5e1006200031c91906200099a565b60075f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60075f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405162000458919062000a59565b60405180910390a3600160095f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160095f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555062000a74565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000842578086048111156200081a5762000819620007b8565b5b60018516156200082a5780820291505b80810290506200083a85620007e5565b9450620007fa565b94509492505050565b5f826200085c57600190506200092e565b816200086b575f90506200092e565b81600181146200088457600281146200088f57620008c5565b60019150506200092e565b60ff841115620008a457620008a3620007b8565b5b8360020a915084821115620008be57620008bd620007b8565b5b506200092e565b5060208310610133831016604e8410600b8410161715620008ff5782820a905083811115620008f957620008f8620007b8565b5b6200092e565b6200090e8484846001620007f1565b92509050818404811115620009285762000927620007b8565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009568262000935565b915062000963836200093e565b9250620009927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200084b565b905092915050565b5f620009a68262000935565b9150620009b38362000935565b9250828202620009c38162000935565b91508282048414831517620009dd57620009dc620007b8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000a1d8262000935565b915062000a2a8362000935565b92508262000a3d5762000a3c620009e4565b5b828204905092915050565b62000a538162000935565b82525050565b5f60208201905062000a6e5f83018462000a48565b92915050565b6141e38062000a825f395ff3fe6080604052600436106101c5575f3560e01c806370a08231116100f657806395d89b4111610094578063dd62ed3e11610063578063dd62ed3e14610622578063e8078d941461065e578063f2fde38b14610668578063f8b45b0514610690576101cc565b806395d89b411461056a578063a6097b0a14610594578063a9059cbb146105bc578063c3f70b52146105f8576101cc565b8063848b86e3116100d0578063848b86e3146104c65780638a8c523c146104ee5780638d3e6e40146105045780638da5cb5b14610540576101cc565b806370a082311461044a578063715018a61461048657806375f0a8741461049c576101cc565b8063368f4800116101635780634d4ce9351161013d5780634d4ce935146103945780634fcd2446146103be57806357ff135a146103e65780635a90a49e1461040e576101cc565b8063368f48001461031857806346b8983414610340578063470624021461036a576101cc565b806323b872dd1161019f57806323b872dd146102605780632b14ca561461029c5780632fb528ba146102c6578063313ce567146102ee576101cc565b806306fdde03146101d0578063095ea7b3146101fa57806318160ddd14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106ba565b6040516101f19190612f49565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190612ffa565b6106f7565b60405161022d9190613052565b60405180910390f35b348015610241575f80fd5b5061024a6107e4565b604051610257919061307a565b60405180910390f35b34801561026b575f80fd5b5061028660048036038101906102819190613093565b610807565b6040516102939190613052565b60405180910390f35b3480156102a7575f80fd5b506102b0610992565b6040516102bd91906130fe565b60405180910390f35b3480156102d1575f80fd5b506102ec60048036038101906102e7919061316b565b6109a7565b005b3480156102f9575f80fd5b50610302610bad565b60405161030f91906130fe565b60405180910390f35b348015610323575f80fd5b5061033e600480360381019061033991906131e0565b610bb5565b005b34801561034b575f80fd5b50610354610d70565b604051610361919061307a565b60405180910390f35b348015610375575f80fd5b5061037e610d79565b60405161038b91906130fe565b60405180910390f35b34801561039f575f80fd5b506103a8610d8e565b6040516103b5919061307a565b60405180910390f35b3480156103c9575f80fd5b506103e460048036038101906103df919061321e565b610d97565b005b3480156103f1575f80fd5b5061040c6004803603810190610407919061325c565b610eae565b005b348015610419575f80fd5b50610434600480360381019061042f91906132ac565b611081565b6040516104419190613052565b60405180910390f35b348015610455575f80fd5b50610470600480360381019061046b91906132ac565b6110d3565b60405161047d919061307a565b60405180910390f35b348015610491575f80fd5b5061049a611119565b005b3480156104a7575f80fd5b506104b061121e565b6040516104bd91906132e6565b60405180910390f35b3480156104d1575f80fd5b506104ec60048036038101906104e791906132ac565b611246565b005b3480156104f9575f80fd5b5061050261144a565b005b34801561050f575f80fd5b5061052a600480360381019061052591906132ac565b611530565b6040516105379190613052565b60405180910390f35b34801561054b575f80fd5b50610554611582565b60405161056191906132e6565b60405180910390f35b348015610575575f80fd5b5061057e6115a9565b60405161058b9190612f49565b60405180910390f35b34801561059f575f80fd5b506105ba60048036038101906105b59190613338565b6115e6565b005b3480156105c7575f80fd5b506105e260048036038101906105dd9190612ffa565b611824565b6040516105ef9190613052565b60405180910390f35b348015610603575f80fd5b5061060c611880565b604051610619919061307a565b60405180910390f35b34801561062d575f80fd5b506106486004803603810190610643919061339c565b611889565b604051610655919061307a565b60405180910390f35b61066661190b565b005b348015610673575f80fd5b5061068e60048036038101906106899190613415565b611e0a565b005b34801561069b575f80fd5b506106a4611f10565b6040516106b1919061307a565b60405180910390f35b60606040518060400160405280600981526020017f50696b617472756d700000000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107d2919061307a565b60405180910390a36001905092915050565b5f6009600a6107f3919061359c565b6305f5e10061080291906135e6565b905090565b5f61081184611f19565b610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790613671565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461097e578160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610976919061368f565b925050819055505b610989848484611feb565b90509392505050565b5f8060199054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b9061370c565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555060648260ff161115610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90613774565b60405180910390fd5b5f60648360ff16610aa6306110d3565b610ab091906135e6565b610aba91906137bf565b90506009600a610aca919061359c565b811115610adb57610ada81612491565b5b8115610b8e575f4790505f8111610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613839565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b8b573d5f803e3d5ffd5b50505b505f600f60016101000a81548160ff0219169083151502179055505050565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c399061370c565b60405180910390fd5b5f60016103e88461ffff166009600a610c5b919061359c565b6305f5e100610c6a91906135e6565b610c7491906135e6565b610c7e91906137bf565b610c889190613857565b9050600354811015610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc6906138d4565b60405180910390fd5b806003819055505f60016103e88461ffff166009600a610cef919061359c565b6305f5e100610cfe91906135e6565b610d0891906135e6565b610d1291906137bf565b610d1c9190613857565b9050600454811015610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a9061393c565b60405180910390fd5b8060048190555050505050565b5f600554905090565b5f8060189054906101000a900460ff16905090565b5f600654905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b9061370c565b60405180910390fd5b60378183610e32919061395a565b60ff161115610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d906139d8565b60405180910390fd5b815f60186101000a81548160ff021916908360ff160217905550805f60196101000a81548160ff021916908360ff1602179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f329061370c565b60405180910390fd5b8080610f445750815b15610fd457600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90613a40565b60405180910390fd5b5b8160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d9061370c565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f60405161121491906132e6565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca9061370c565b60405180910390fd5b600e5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490613aa8565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce9061370c565b60405180910390fd5b600f5f9054906101000a900460ff1615611526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151d90613b10565b60405180910390fd5b61152e6126a4565b565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f50494b5400000000000000000000000000000000000000000000000000000000815250905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a9061370c565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61168f919061359c565b6305f5e10061169e91906135e6565b6116a891906135e6565b6116b291906137bf565b6005819055508063ffffffff168263ffffffff166009600a6116d4919061359c565b6305f5e1006116e391906135e6565b6116ed91906135e6565b6116f791906137bf565b6006819055506005546006541015611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90613b78565b60405180910390fd5b620186a06009600a611756919061359c565b6305f5e10061176591906135e6565b61176f91906137bf565b600654116117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990613be0565b60405180910390fd5b60646009600a6117c2919061359c565b6305f5e1006117d191906135e6565b6117db91906137bf565b6006541061181e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181590613c48565b60405180910390fd5b50505050565b5f61182e33611f19565b61186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490613671565b60405180910390fd5b611878338484611feb565b905092915050565b5f600354905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061370c565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613cb0565b60405180910390fd5b600f5f9054906101000a900460ff1615611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8890613b10565b60405180910390fd5b5f341180611a9e57505f47115b611add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad490613d18565b60405180910390fd5b5f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390613d80565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bea9190613db2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c949190613db2565b6040518363ffffffff1660e01b8152600401611cb1929190613ddd565b6020604051808303815f875af1158015611ccd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf19190613db2565b600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d7860075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054475f6126c7565b6001600e5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8e9061370c565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611f059190613e5f565b60405180910390a150565b5f600454905090565b5f805f9050600f5f9054906101000a900460ff1615611f3b5760019050611fe2565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611fd75750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611fe157600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190613ec2565b60405180910390fd5b600f5f9054906101000a900460ff166121495760095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121095750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f90613671565b60405180910390fd5b5b600f60019054906101000a900460ff161580156121ac5750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156121ba576121b96127ae565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561222257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561227957505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122c9576122898484846128bb565b6122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf90613f2a565b60405180910390fd5b5b5f6122d5858585612a43565b90505f81846122e4919061368f565b90508360075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232f919061368f565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8211156123cc578160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123c49190613857565b925050819055505b8060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124189190613857565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161247c919061307a565b60405180910390a36001925050509392505050565b61249a81612cdd565b5f600267ffffffffffffffff8111156124b6576124b5613f48565b5b6040519080825280602002602001820160405280156124e45781602001602082028036833780820191505090505b50905030815f815181106124fb576124fa613f75565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c39190613db2565b816001815181106125d7576125d6613f75565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612673959493929190614092565b5f604051808303815f87803b15801561268a575f80fd5b505af115801561269c573d5f803e3d5ffd5b505050505050565b6001600f5f6101000a81548160ff02191690831515021790555043600281905550565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156126f6575f90505b6126ff84612cdd565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198430875f8087426040518863ffffffff1660e01b8152600401612764969594939291906140ea565b60606040518083038185885af1158015612780573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127a5919061415d565b50505050505050565b6001600f60016101000a81548160ff0219169083151502179055505f6127d3306110d3565b905060055481101580156127f25750600f5f9054906101000a900460ff165b1561289e5760065481106128065760065490505b5f8190506009600a612818919061359c565b8111156128295761282881612491565b5b5f4790505f81111561289b5760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612899573d5f803e3d5ffd5b505b50505b505f600f60016101000a81548160ff021916908315150217905550565b5f8060019050600f5f9054906101000a900460ff1680156129235750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129765750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a385760035483111561298d575f9050612a37565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612a2d57506004548360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a2b9190613857565b115b15612a36575f90505b5b5b809150509392505050565b5f80600f5f9054906101000a900460ff161580612aa6575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612af7575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b04575f9050612cd2565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c55575f60179054906101000a900460ff1660ff165f60169054906101000a900460ff1660ff16600254612b849190613857565b612b8e9190613857565b4310612bc45760645f60189054906101000a900460ff1660ff1684612bb391906135e6565b612bbd91906137bf565b9050612c50565b5f60169054906101000a900460ff1660ff16600254612be39190613857565b4310612c195760645f60159054906101000a900460ff1660ff1684612c0891906135e6565b612c1291906137bf565b9050612c4f565b6002544310612c4e5760645f60149054906101000a900460ff1660ff1684612c4191906135e6565b612c4b91906137bf565b90505b5b5b612cd1565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612cd05760645f60199054906101000a900460ff1660ff1684612cc391906135e6565b612ccd91906137bf565b90505b5b5b809150509392505050565b8060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612ebc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612eb3919061307a565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612ef6578082015181840152602081019050612edb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612f1b82612ebf565b612f258185612ec9565b9350612f35818560208601612ed9565b612f3e81612f01565b840191505092915050565b5f6020820190508181035f830152612f618184612f11565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f9682612f6d565b9050919050565b612fa681612f8c565b8114612fb0575f80fd5b50565b5f81359050612fc181612f9d565b92915050565b5f819050919050565b612fd981612fc7565b8114612fe3575f80fd5b50565b5f81359050612ff481612fd0565b92915050565b5f80604083850312156130105761300f612f69565b5b5f61301d85828601612fb3565b925050602061302e85828601612fe6565b9150509250929050565b5f8115159050919050565b61304c81613038565b82525050565b5f6020820190506130655f830184613043565b92915050565b61307481612fc7565b82525050565b5f60208201905061308d5f83018461306b565b92915050565b5f805f606084860312156130aa576130a9612f69565b5b5f6130b786828701612fb3565b93505060206130c886828701612fb3565b92505060406130d986828701612fe6565b9150509250925092565b5f60ff82169050919050565b6130f8816130e3565b82525050565b5f6020820190506131115f8301846130ef565b92915050565b613120816130e3565b811461312a575f80fd5b50565b5f8135905061313b81613117565b92915050565b61314a81613038565b8114613154575f80fd5b50565b5f8135905061316581613141565b92915050565b5f806040838503121561318157613180612f69565b5b5f61318e8582860161312d565b925050602061319f85828601613157565b9150509250929050565b5f61ffff82169050919050565b6131bf816131a9565b81146131c9575f80fd5b50565b5f813590506131da816131b6565b92915050565b5f80604083850312156131f6576131f5612f69565b5b5f613203858286016131cc565b9250506020613214858286016131cc565b9150509250929050565b5f806040838503121561323457613233612f69565b5b5f6132418582860161312d565b92505060206132528582860161312d565b9150509250929050565b5f805f6060848603121561327357613272612f69565b5b5f61328086828701612fb3565b935050602061329186828701613157565b92505060406132a286828701613157565b9150509250925092565b5f602082840312156132c1576132c0612f69565b5b5f6132ce84828501612fb3565b91505092915050565b6132e081612f8c565b82525050565b5f6020820190506132f95f8301846132d7565b92915050565b5f63ffffffff82169050919050565b613317816132ff565b8114613321575f80fd5b50565b5f813590506133328161330e565b92915050565b5f805f80608085870312156133505761334f612f69565b5b5f61335d87828801613324565b945050602061336e87828801613324565b935050604061337f87828801613324565b925050606061339087828801613324565b91505092959194509250565b5f80604083850312156133b2576133b1612f69565b5b5f6133bf85828601612fb3565b92505060206133d085828601612fb3565b9150509250929050565b5f6133e482612f6d565b9050919050565b6133f4816133da565b81146133fe575f80fd5b50565b5f8135905061340f816133eb565b92915050565b5f6020828403121561342a57613429612f69565b5b5f61343784828501613401565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156134c25780860481111561349e5761349d613440565b5b60018516156134ad5780820291505b80810290506134bb8561346d565b9450613482565b94509492505050565b5f826134da5760019050613595565b816134e7575f9050613595565b81600181146134fd576002811461350757613536565b6001915050613595565b60ff84111561351957613518613440565b5b8360020a9150848211156135305761352f613440565b5b50613595565b5060208310610133831016604e8410600b841016171561356b5782820a90508381111561356657613565613440565b5b613595565b6135788484846001613479565b9250905081840481111561358f5761358e613440565b5b81810290505b9392505050565b5f6135a682612fc7565b91506135b1836130e3565b92506135de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134cb565b905092915050565b5f6135f082612fc7565b91506135fb83612fc7565b925082820261360981612fc7565b915082820484148315176136205761361f613440565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f61365b601083612ec9565b915061366682613627565b602082019050919050565b5f6020820190508181035f8301526136888161364f565b9050919050565b5f61369982612fc7565b91506136a483612fc7565b92508282039050818111156136bc576136bb613440565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f6136f6601883612ec9565b9150613701826136c2565b602082019050919050565b5f6020820190508181035f830152613723816136ea565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e20313030250000000000005f82015250565b5f61375e601a83612ec9565b91506137698261372a565b602082019050919050565b5f6020820190508181035f83015261378b81613752565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137c982612fc7565b91506137d483612fc7565b9250826137e4576137e3613792565b5b828204905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613823600683612ec9565b915061382e826137ef565b602082019050919050565b5f6020820190508181035f83015261385081613817565b9050919050565b5f61386182612fc7565b915061386c83612fc7565b925082820190508082111561388457613883613440565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f6138be600a83612ec9565b91506138c98261388a565b602082019050919050565b5f6020820190508181035f8301526138eb816138b2565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613926600e83612ec9565b9150613931826138f2565b602082019050919050565b5f6020820190508181035f8301526139538161391a565b9050919050565b5f613964826130e3565b915061396f836130e3565b9250828201905060ff81111561398857613987613440565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f6139c2601283612ec9565b91506139cd8261398e565b602082019050919050565b5f6020820190508181035f8301526139ef816139b6565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f613a2a601083612ec9565b9150613a35826139f6565b602082019050919050565b5f6020820190508181035f830152613a5781613a1e565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613a92601783612ec9565b9150613a9d82613a5e565b602082019050919050565b5f6020820190508181035f830152613abf81613a86565b9050919050565b7f74726164696e67206973206f70656e00000000000000000000000000000000005f82015250565b5f613afa600f83612ec9565b9150613b0582613ac6565b602082019050919050565b5f6020820190508181035f830152613b2781613aee565b9050919050565b7f4d696e2f4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613b62600d83612ec9565b9150613b6d82613b2e565b602082019050919050565b5f6020820190508181035f830152613b8f81613b56565b9050919050565b7f4d617820746f6f206c6f770000000000000000000000000000000000000000005f82015250565b5f613bca600b83612ec9565b9150613bd582613b96565b602082019050919050565b5f6020820190508181035f830152613bf781613bbe565b9050919050565b7f4d617820746f6f206869676800000000000000000000000000000000000000005f82015250565b5f613c32600c83612ec9565b9150613c3d82613bfe565b602082019050919050565b5f6020820190508181035f830152613c5f81613c26565b9050919050565b7f4c502065786973747300000000000000000000000000000000000000000000005f82015250565b5f613c9a600983612ec9565b9150613ca582613c66565b602082019050919050565b5f6020820190508181035f830152613cc781613c8e565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000005f82015250565b5f613d02601d83612ec9565b9150613d0d82613cce565b602082019050919050565b5f6020820190508181035f830152613d2f81613cf6565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f613d6a601583612ec9565b9150613d7582613d36565b602082019050919050565b5f6020820190508181035f830152613d9781613d5e565b9050919050565b5f81519050613dac81612f9d565b92915050565b5f60208284031215613dc757613dc6612f69565b5b5f613dd484828501613d9e565b91505092915050565b5f604082019050613df05f8301856132d7565b613dfd60208301846132d7565b9392505050565b5f819050919050565b5f613e27613e22613e1d84612f6d565b613e04565b612f6d565b9050919050565b5f613e3882613e0d565b9050919050565b5f613e4982613e2e565b9050919050565b613e5981613e3f565b82525050565b5f602082019050613e725f830184613e50565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000005f82015250565b5f613eac601d83612ec9565b9150613eb782613e78565b602082019050919050565b5f6020820190508181035f830152613ed981613ea0565b9050919050565b7f54582065786365656473206c696d6974730000000000000000000000000000005f82015250565b5f613f14601183612ec9565b9150613f1f82613ee0565b602082019050919050565b5f6020820190508181035f830152613f4181613f08565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613fc5613fc0613fbb84613fa2565b613e04565b612fc7565b9050919050565b613fd581613fab565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61400d81612f8c565b82525050565b5f61401e8383614004565b60208301905092915050565b5f602082019050919050565b5f61404082613fdb565b61404a8185613fe5565b935061405583613ff5565b805f5b8381101561408557815161406c8882614013565b97506140778361402a565b925050600181019050614058565b5085935050505092915050565b5f60a0820190506140a55f83018861306b565b6140b26020830187613fcc565b81810360408301526140c48186614036565b90506140d360608301856132d7565b6140e0608083018461306b565b9695505050505050565b5f60c0820190506140fd5f8301896132d7565b61410a602083018861306b565b6141176040830187613fcc565b6141246060830186613fcc565b61413160808301856132d7565b61413e60a083018461306b565b979650505050505050565b5f8151905061415781612fd0565b92915050565b5f805f6060848603121561417457614173612f69565b5b5f61418186828701614149565b935050602061419286828701614149565b92505060406141a386828701614149565b915050925092509256fea2646970667358221220be60292be8957751bdeabae7f50b000c89b02a7b5559bf29d642a935b5901be364736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c806370a08231116100f657806395d89b4111610094578063dd62ed3e11610063578063dd62ed3e14610622578063e8078d941461065e578063f2fde38b14610668578063f8b45b0514610690576101cc565b806395d89b411461056a578063a6097b0a14610594578063a9059cbb146105bc578063c3f70b52146105f8576101cc565b8063848b86e3116100d0578063848b86e3146104c65780638a8c523c146104ee5780638d3e6e40146105045780638da5cb5b14610540576101cc565b806370a082311461044a578063715018a61461048657806375f0a8741461049c576101cc565b8063368f4800116101635780634d4ce9351161013d5780634d4ce935146103945780634fcd2446146103be57806357ff135a146103e65780635a90a49e1461040e576101cc565b8063368f48001461031857806346b8983414610340578063470624021461036a576101cc565b806323b872dd1161019f57806323b872dd146102605780632b14ca561461029c5780632fb528ba146102c6578063313ce567146102ee576101cc565b806306fdde03146101d0578063095ea7b3146101fa57806318160ddd14610236576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106ba565b6040516101f19190612f49565b60405180910390f35b348015610205575f80fd5b50610220600480360381019061021b9190612ffa565b6106f7565b60405161022d9190613052565b60405180910390f35b348015610241575f80fd5b5061024a6107e4565b604051610257919061307a565b60405180910390f35b34801561026b575f80fd5b5061028660048036038101906102819190613093565b610807565b6040516102939190613052565b60405180910390f35b3480156102a7575f80fd5b506102b0610992565b6040516102bd91906130fe565b60405180910390f35b3480156102d1575f80fd5b506102ec60048036038101906102e7919061316b565b6109a7565b005b3480156102f9575f80fd5b50610302610bad565b60405161030f91906130fe565b60405180910390f35b348015610323575f80fd5b5061033e600480360381019061033991906131e0565b610bb5565b005b34801561034b575f80fd5b50610354610d70565b604051610361919061307a565b60405180910390f35b348015610375575f80fd5b5061037e610d79565b60405161038b91906130fe565b60405180910390f35b34801561039f575f80fd5b506103a8610d8e565b6040516103b5919061307a565b60405180910390f35b3480156103c9575f80fd5b506103e460048036038101906103df919061321e565b610d97565b005b3480156103f1575f80fd5b5061040c6004803603810190610407919061325c565b610eae565b005b348015610419575f80fd5b50610434600480360381019061042f91906132ac565b611081565b6040516104419190613052565b60405180910390f35b348015610455575f80fd5b50610470600480360381019061046b91906132ac565b6110d3565b60405161047d919061307a565b60405180910390f35b348015610491575f80fd5b5061049a611119565b005b3480156104a7575f80fd5b506104b061121e565b6040516104bd91906132e6565b60405180910390f35b3480156104d1575f80fd5b506104ec60048036038101906104e791906132ac565b611246565b005b3480156104f9575f80fd5b5061050261144a565b005b34801561050f575f80fd5b5061052a600480360381019061052591906132ac565b611530565b6040516105379190613052565b60405180910390f35b34801561054b575f80fd5b50610554611582565b60405161056191906132e6565b60405180910390f35b348015610575575f80fd5b5061057e6115a9565b60405161058b9190612f49565b60405180910390f35b34801561059f575f80fd5b506105ba60048036038101906105b59190613338565b6115e6565b005b3480156105c7575f80fd5b506105e260048036038101906105dd9190612ffa565b611824565b6040516105ef9190613052565b60405180910390f35b348015610603575f80fd5b5061060c611880565b604051610619919061307a565b60405180910390f35b34801561062d575f80fd5b506106486004803603810190610643919061339c565b611889565b604051610655919061307a565b60405180910390f35b61066661190b565b005b348015610673575f80fd5b5061068e60048036038101906106899190613415565b611e0a565b005b34801561069b575f80fd5b506106a4611f10565b6040516106b1919061307a565b60405180910390f35b60606040518060400160405280600981526020017f50696b617472756d700000000000000000000000000000000000000000000000815250905090565b5f8160085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516107d2919061307a565b60405180910390a36001905092915050565b5f6009600a6107f3919061359c565b6305f5e10061080291906135e6565b905090565b5f61081184611f19565b610850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084790613671565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461097e578160085f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610976919061368f565b925050819055505b610989848484611feb565b90509392505050565b5f8060199054906101000a900460ff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2b9061370c565b60405180910390fd5b6001600f60016101000a81548160ff02191690831515021790555060648260ff161115610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90613774565b60405180910390fd5b5f60648360ff16610aa6306110d3565b610ab091906135e6565b610aba91906137bf565b90506009600a610aca919061359c565b811115610adb57610ada81612491565b5b8115610b8e575f4790505f8111610b27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1e90613839565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610b8b573d5f803e3d5ffd5b50505b505f600f60016101000a81548160ff0219169083151502179055505050565b5f6009905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c399061370c565b60405180910390fd5b5f60016103e88461ffff166009600a610c5b919061359c565b6305f5e100610c6a91906135e6565b610c7491906135e6565b610c7e91906137bf565b610c889190613857565b9050600354811015610ccf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cc6906138d4565b60405180910390fd5b806003819055505f60016103e88461ffff166009600a610cef919061359c565b6305f5e100610cfe91906135e6565b610d0891906135e6565b610d1291906137bf565b610d1c9190613857565b9050600454811015610d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5a9061393c565b60405180910390fd5b8060048190555050505050565b5f600554905090565b5f8060189054906101000a900460ff16905090565b5f600654905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1b9061370c565b60405180910390fd5b60378183610e32919061395a565b60ff161115610e76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6d906139d8565b60405180910390fd5b815f60186101000a81548160ff021916908360ff160217905550805f60196101000a81548160ff021916908360ff1602179055505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f329061370c565b60405180910390fd5b8080610f445750815b15610fd457600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610fd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fca90613a40565b60405180910390fd5b5b8160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505050565b5f60095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f60075f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119d9061370c565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f60405161121491906132e6565b60405180910390a1565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ca9061370c565b60405180910390fd5b600e5f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561135d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135490613aa8565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160095f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ce9061370c565b60405180910390fd5b600f5f9054906101000a900460ff1615611526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151d90613b10565b60405180910390fd5b61152e6126a4565b565b5f600a5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f50494b5400000000000000000000000000000000000000000000000000000000815250905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611673576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166a9061370c565b60405180910390fd5b8263ffffffff168463ffffffff166009600a61168f919061359c565b6305f5e10061169e91906135e6565b6116a891906135e6565b6116b291906137bf565b6005819055508063ffffffff168263ffffffff166009600a6116d4919061359c565b6305f5e1006116e391906135e6565b6116ed91906135e6565b6116f791906137bf565b6006819055506005546006541015611744576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173b90613b78565b60405180910390fd5b620186a06009600a611756919061359c565b6305f5e10061176591906135e6565b61176f91906137bf565b600654116117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990613be0565b60405180910390fd5b60646009600a6117c2919061359c565b6305f5e1006117d191906135e6565b6117db91906137bf565b6006541061181e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181590613c48565b60405180910390fd5b50505050565b5f61182e33611f19565b61186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490613671565b60405180910390fd5b611878338484611feb565b905092915050565b5f600354905090565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f9061370c565b60405180910390fd5b6001600f60016101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990613cb0565b60405180910390fd5b600f5f9054906101000a900460ff1615611a91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8890613b10565b60405180910390fd5b5f341180611a9e57505f47115b611add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ad490613d18565b60405180910390fd5b5f60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205411611b5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b5390613d80565b60405180910390fd5b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bc6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611bea9190613db2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c70573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611c949190613db2565b6040518363ffffffff1660e01b8152600401611cb1929190613ddd565b6020604051808303815f875af1158015611ccd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cf19190613db2565b600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611d7860075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054475f6126c7565b6001600e5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f600f60016101000a81548160ff021916908315150217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8e9061370c565b60405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051611f059190613e5f565b60405180910390a150565b5f600454905090565b5f805f9050600f5f9054906101000a900460ff1615611f3b5760019050611fe2565b60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611fd75750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611fe157600190505b5b80915050919050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361205a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205190613ec2565b60405180910390fd5b600f5f9054906101000a900460ff166121495760095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156121095750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612148576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213f90613671565b60405180910390fd5b5b600f60019054906101000a900460ff161580156121ac5750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156121ba576121b96127ae565b5b3073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561222257503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561227957505f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156122c9576122898484846128bb565b6122c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122bf90613f2a565b60405180910390fd5b5b5f6122d5858585612a43565b90505f81846122e4919061368f565b90508360075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461232f919061368f565b60075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8211156123cc578160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546123c49190613857565b925050819055505b8060075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546124189190613857565b925050819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8660405161247c919061307a565b60405180910390a36001925050509392505050565b61249a81612cdd565b5f600267ffffffffffffffff8111156124b6576124b5613f48565b5b6040519080825280602002602001820160405280156124e45781602001602082028036833780820191505090505b50905030815f815181106124fb576124fa613f75565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561259f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125c39190613db2565b816001815181106125d7576125d6613f75565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612673959493929190614092565b5f604051808303815f87803b15801561268a575f80fd5b505af115801561269c573d5f803e3d5ffd5b505050505050565b6001600f5f6101000a81548160ff02191690831515021790555043600281905550565b5f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081156126f6575f90505b6126ff84612cdd565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198430875f8087426040518863ffffffff1660e01b8152600401612764969594939291906140ea565b60606040518083038185885af1158015612780573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906127a5919061415d565b50505050505050565b6001600f60016101000a81548160ff0219169083151502179055505f6127d3306110d3565b905060055481101580156127f25750600f5f9054906101000a900460ff165b1561289e5760065481106128065760065490505b5f8190506009600a612818919061359c565b8111156128295761282881612491565b5b5f4790505f81111561289b5760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612899573d5f803e3d5ffd5b505b50505b505f600f60016101000a81548160ff021916908315150217905550565b5f8060019050600f5f9054906101000a900460ff1680156129235750600a5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156129765750600a5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612a385760035483111561298d575f9050612a37565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612a2d57506004548360075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a2b9190613857565b115b15612a36575f90505b5b5b809150509392505050565b5f80600f5f9054906101000a900460ff161580612aa6575060095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612af7575060095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612b04575f9050612cd2565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612c55575f60179054906101000a900460ff1660ff165f60169054906101000a900460ff1660ff16600254612b849190613857565b612b8e9190613857565b4310612bc45760645f60189054906101000a900460ff1660ff1684612bb391906135e6565b612bbd91906137bf565b9050612c50565b5f60169054906101000a900460ff1660ff16600254612be39190613857565b4310612c195760645f60159054906101000a900460ff1660ff1684612c0891906135e6565b612c1291906137bf565b9050612c4f565b6002544310612c4e5760645f60149054906101000a900460ff1660ff1684612c4191906135e6565b612c4b91906137bf565b90505b5b5b612cd1565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615612cd05760645f60199054906101000a900460ff1660ff1684612cc391906135e6565b612ccd91906137bf565b90505b5b5b809150509392505050565b8060085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612ebc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60085f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9257fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff604051612eb3919061307a565b60405180910390a35b50565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612ef6578082015181840152602081019050612edb565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612f1b82612ebf565b612f258185612ec9565b9350612f35818560208601612ed9565b612f3e81612f01565b840191505092915050565b5f6020820190508181035f830152612f618184612f11565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f9682612f6d565b9050919050565b612fa681612f8c565b8114612fb0575f80fd5b50565b5f81359050612fc181612f9d565b92915050565b5f819050919050565b612fd981612fc7565b8114612fe3575f80fd5b50565b5f81359050612ff481612fd0565b92915050565b5f80604083850312156130105761300f612f69565b5b5f61301d85828601612fb3565b925050602061302e85828601612fe6565b9150509250929050565b5f8115159050919050565b61304c81613038565b82525050565b5f6020820190506130655f830184613043565b92915050565b61307481612fc7565b82525050565b5f60208201905061308d5f83018461306b565b92915050565b5f805f606084860312156130aa576130a9612f69565b5b5f6130b786828701612fb3565b93505060206130c886828701612fb3565b92505060406130d986828701612fe6565b9150509250925092565b5f60ff82169050919050565b6130f8816130e3565b82525050565b5f6020820190506131115f8301846130ef565b92915050565b613120816130e3565b811461312a575f80fd5b50565b5f8135905061313b81613117565b92915050565b61314a81613038565b8114613154575f80fd5b50565b5f8135905061316581613141565b92915050565b5f806040838503121561318157613180612f69565b5b5f61318e8582860161312d565b925050602061319f85828601613157565b9150509250929050565b5f61ffff82169050919050565b6131bf816131a9565b81146131c9575f80fd5b50565b5f813590506131da816131b6565b92915050565b5f80604083850312156131f6576131f5612f69565b5b5f613203858286016131cc565b9250506020613214858286016131cc565b9150509250929050565b5f806040838503121561323457613233612f69565b5b5f6132418582860161312d565b92505060206132528582860161312d565b9150509250929050565b5f805f6060848603121561327357613272612f69565b5b5f61328086828701612fb3565b935050602061329186828701613157565b92505060406132a286828701613157565b9150509250925092565b5f602082840312156132c1576132c0612f69565b5b5f6132ce84828501612fb3565b91505092915050565b6132e081612f8c565b82525050565b5f6020820190506132f95f8301846132d7565b92915050565b5f63ffffffff82169050919050565b613317816132ff565b8114613321575f80fd5b50565b5f813590506133328161330e565b92915050565b5f805f80608085870312156133505761334f612f69565b5b5f61335d87828801613324565b945050602061336e87828801613324565b935050604061337f87828801613324565b925050606061339087828801613324565b91505092959194509250565b5f80604083850312156133b2576133b1612f69565b5b5f6133bf85828601612fb3565b92505060206133d085828601612fb3565b9150509250929050565b5f6133e482612f6d565b9050919050565b6133f4816133da565b81146133fe575f80fd5b50565b5f8135905061340f816133eb565b92915050565b5f6020828403121561342a57613429612f69565b5b5f61343784828501613401565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156134c25780860481111561349e5761349d613440565b5b60018516156134ad5780820291505b80810290506134bb8561346d565b9450613482565b94509492505050565b5f826134da5760019050613595565b816134e7575f9050613595565b81600181146134fd576002811461350757613536565b6001915050613595565b60ff84111561351957613518613440565b5b8360020a9150848211156135305761352f613440565b5b50613595565b5060208310610133831016604e8410600b841016171561356b5782820a90508381111561356657613565613440565b5b613595565b6135788484846001613479565b9250905081840481111561358f5761358e613440565b5b81810290505b9392505050565b5f6135a682612fc7565b91506135b1836130e3565b92506135de7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134cb565b905092915050565b5f6135f082612fc7565b91506135fb83612fc7565b925082820261360981612fc7565b915082820484148315176136205761361f613440565b5b5092915050565b7f54726164696e67206e6f74206f70656e000000000000000000000000000000005f82015250565b5f61365b601083612ec9565b915061366682613627565b602082019050919050565b5f6020820190508181035f8301526136888161364f565b9050919050565b5f61369982612fc7565b91506136a483612fc7565b92508282039050818111156136bc576136bb613440565b5b92915050565b7f4f6e6c79206f776e65722063616e2063616c6c207468697300000000000000005f82015250565b5f6136f6601883612ec9565b9150613701826136c2565b602082019050919050565b5f6020820190508181035f830152613723816136ea565b9050919050565b7f43616e6e6f742073776170206d6f7265207468616e20313030250000000000005f82015250565b5f61375e601a83612ec9565b91506137698261372a565b602082019050919050565b5f6020820190508181035f83015261378b81613752565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6137c982612fc7565b91506137d483612fc7565b9250826137e4576137e3613792565b5b828204905092915050565b7f4e6f2045544800000000000000000000000000000000000000000000000000005f82015250565b5f613823600683612ec9565b915061382e826137ef565b602082019050919050565b5f6020820190508181035f83015261385081613817565b9050919050565b5f61386182612fc7565b915061386c83612fc7565b925082820190508082111561388457613883613440565b5b92915050565b7f747820746f6f206c6f77000000000000000000000000000000000000000000005f82015250565b5f6138be600a83612ec9565b91506138c98261388a565b602082019050919050565b5f6020820190508181035f8301526138eb816138b2565b9050919050565b7f77616c6c657420746f6f206c6f770000000000000000000000000000000000005f82015250565b5f613926600e83612ec9565b9150613931826138f2565b602082019050919050565b5f6020820190508181035f8301526139538161391a565b9050919050565b5f613964826130e3565b915061396f836130e3565b9250828201905060ff81111561398857613987613440565b5b92915050565b7f526f756e647472697020746f6f206869676800000000000000000000000000005f82015250565b5f6139c2601283612ec9565b91506139cd8261398e565b602082019050919050565b5f6020820190508181035f8301526139ef816139b6565b9050919050565b7f43616e6e6f74206578656d7074204c50000000000000000000000000000000005f82015250565b5f613a2a601083612ec9565b9150613a35826139f6565b602082019050919050565b5f6020820190508181035f830152613a5781613a1e565b9050919050565b7f4c502063616e6e6f74206265207461782077616c6c65740000000000000000005f82015250565b5f613a92601783612ec9565b9150613a9d82613a5e565b602082019050919050565b5f6020820190508181035f830152613abf81613a86565b9050919050565b7f74726164696e67206973206f70656e00000000000000000000000000000000005f82015250565b5f613afa600f83612ec9565b9150613b0582613ac6565b602082019050919050565b5f6020820190508181035f830152613b2781613aee565b9050919050565b7f4d696e2f4d6178206572726f72000000000000000000000000000000000000005f82015250565b5f613b62600d83612ec9565b9150613b6d82613b2e565b602082019050919050565b5f6020820190508181035f830152613b8f81613b56565b9050919050565b7f4d617820746f6f206c6f770000000000000000000000000000000000000000005f82015250565b5f613bca600b83612ec9565b9150613bd582613b96565b602082019050919050565b5f6020820190508181035f830152613bf781613bbe565b9050919050565b7f4d617820746f6f206869676800000000000000000000000000000000000000005f82015250565b5f613c32600c83612ec9565b9150613c3d82613bfe565b602082019050919050565b5f6020820190508181035f830152613c5f81613c26565b9050919050565b7f4c502065786973747300000000000000000000000000000000000000000000005f82015250565b5f613c9a600983612ec9565b9150613ca582613c66565b602082019050919050565b5f6020820190508181035f830152613cc781613c8e565b9050919050565b7f4e6f2045544820696e20636f6e7472616374206f72206d6573736167650000005f82015250565b5f613d02601d83612ec9565b9150613d0d82613cce565b602082019050919050565b5f6020820190508181035f830152613d2f81613cf6565b9050919050565b7f4e6f20746f6b656e7320696e20636f6e747261637400000000000000000000005f82015250565b5f613d6a601583612ec9565b9150613d7582613d36565b602082019050919050565b5f6020820190508181035f830152613d9781613d5e565b9050919050565b5f81519050613dac81612f9d565b92915050565b5f60208284031215613dc757613dc6612f69565b5b5f613dd484828501613d9e565b91505092915050565b5f604082019050613df05f8301856132d7565b613dfd60208301846132d7565b9392505050565b5f819050919050565b5f613e27613e22613e1d84612f6d565b613e04565b612f6d565b9050919050565b5f613e3882613e0d565b9050919050565b5f613e4982613e2e565b9050919050565b613e5981613e3f565b82525050565b5f602082019050613e725f830184613e50565b92915050565b7f4e6f207472616e73666572732066726f6d205a65726f2077616c6c65740000005f82015250565b5f613eac601d83612ec9565b9150613eb782613e78565b602082019050919050565b5f6020820190508181035f830152613ed981613ea0565b9050919050565b7f54582065786365656473206c696d6974730000000000000000000000000000005f82015250565b5f613f14601183612ec9565b9150613f1f82613ee0565b602082019050919050565b5f6020820190508181035f830152613f4181613f08565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f613fc5613fc0613fbb84613fa2565b613e04565b612fc7565b9050919050565b613fd581613fab565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61400d81612f8c565b82525050565b5f61401e8383614004565b60208301905092915050565b5f602082019050919050565b5f61404082613fdb565b61404a8185613fe5565b935061405583613ff5565b805f5b8381101561408557815161406c8882614013565b97506140778361402a565b925050600181019050614058565b5085935050505092915050565b5f60a0820190506140a55f83018861306b565b6140b26020830187613fcc565b81810360408301526140c48186614036565b90506140d360608301856132d7565b6140e0608083018461306b565b9695505050505050565b5f60c0820190506140fd5f8301896132d7565b61410a602083018861306b565b6141176040830187613fcc565b6141246060830186613fcc565b61413160808301856132d7565b61413e60a083018461306b565b979650505050505050565b5f8151905061415781612fd0565b92915050565b5f805f6060848603121561417457614173612f69565b5b5f61418186828701614149565b935050602061419286828701614149565b92505060406141a386828701614149565b915050925092509256fea2646970667358221220be60292be8957751bdeabae7f50b000c89b02a7b5559bf29d642a935b5901be364736f6c63430008150033

Deployed Bytecode Sourcemap

2350:11988:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4818:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5157:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4548:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5616:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10775:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13773:562;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4642:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11838:462;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11643:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10685:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11739:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10870:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10426:250;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10190:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4904:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2159:134;;;;;;;;;;;;;:::i;:::-;;11064:101;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11174:254;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7308:129;;;;;;;;;;;;;:::i;:::-;;10306:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1914:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4728:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12309:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5382:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11538:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5015:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6322:583;;;:::i;:::-;;1999:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11437:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4818:80;4866:13;4890:5;;;;;;;;;;;;;;;;;4883:12;;4818:80;:::o;5157:216::-;5232:4;5284:6;5249:11;:23;5261:10;5249:23;;;;;;;;;;;;;;;:32;5273:7;5249:32;;;;;;;;;;;;;;;:41;;;;5327:7;5306:37;;5315:10;5306:37;;;5336:6;5306:37;;;;;;:::i;:::-;;;;;;;;5361:4;5354:11;;5157:216;;;;:::o;4548:88::-;4603:7;2432:1;2493:2;:13;;;;:::i;:::-;2480:9;:27;;;;:::i;:::-;4614:19;;4548:88;:::o;5616:371::-;5716:4;5741:25;5759:6;5741:17;:25::i;:::-;5733:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;5836:17;5801:11;:19;5813:6;5801:19;;;;;;;;;;;;;;;:31;5821:10;5801:31;;;;;;;;;;;;;;;;:52;5798:124;;5904:6;5869:11;:19;5881:6;5869:19;;;;;;;;;;;;;;;:31;5889:10;5869:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;5798:124;5939:40;5953:6;5961:9;5972:6;5939:13;:40::i;:::-;5932:47;;5616:371;;;;;:::o;10775:86::-;10816:5;10841:12;;;;;;;;;;;10834:19;;10775:86;:::o;13773:562::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3924:4:::1;3911:10;;:17;;;;;;;;;;;;;;;;;;13911:3:::2;13891:16;:23;;;;13883:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;13956:20;14025:3;14006:16;13979:43;;:24;13997:4;13979:9;:24::i;:::-;:43;;;;:::i;:::-;:49;;;;:::i;:::-;13956:72;;2432:1;14058:2;:15;;;;:::i;:::-;14043:12;:30;14039:97;;;14090:34;14111:12;14090:20;:34::i;:::-;14039:97;14150:7;14146:182;;;14174:18;14195:21;14174:42;;14252:1;14239:10;:14;14231:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;14279:16;;;;;;;;;;;:25;;:37;14305:10;14279:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;14159:169;14146:182;13872:463;3964:5:::1;3951:10;;:18;;;;;;;;;;;;;;;;;;13773:562:::0;;:::o;4642:80::-;4694:5;2432:1;4703:16;;4642:80;:::o;11838:462::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11944:16:::1;12010:1;12003:4;11978:22;11963:37;;2432:1;2493:2;:13;;;;:::i;:::-;2480:9;:27;;;;:::i;:::-;11963:37;;;;:::i;:::-;:44;;;;:::i;:::-;:48;;;;:::i;:::-;11944:67;;12042:12;;12030:8;:24;;12022:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12095:8;12080:12;:23;;;;12114:20;12179:1;12172:4;12152:17;12137:32;;2432:1;2493:2;:13;;;;:::i;:::-;2480:9;:27;;;;:::i;:::-;12137:32;;;;:::i;:::-;:39;;;;:::i;:::-;:43;;;;:::i;:::-;12114:66;;12215:16;;12199:12;:32;;12191:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;12280:12;12261:16;:31;;;;11933:367;;11838:462:::0;;:::o;11643:90::-;11687:7;11714:11;;11707:18;;11643:90;:::o;10685:84::-;10725:5;10750:11;;;;;;;;;;;10743:18;;10685:84;:::o;11739:90::-;11783:7;11810:11;;11803:18;;11739:90;:::o;10870:183::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10962:2:::1;10954:4;10948:3;:10;;;;:::i;:::-;:16;;;;10940:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11012:3;10998:11;;:17;;;;;;;;;;;;;;;;;;11041:4;11026:12;;:19;;;;;;;;;;;;;;;;;;10870:183:::0;;:::o;10426:250::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;10523:8:::1;:18;;;;10535:6;10523:18;10519:72;;;10554:5;:13;10560:6;10554:13;;;;;;;;;;;;;;;;;;;;;;;;;10553:14;10545:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;10519:72;10621:6;10601:7;:17;10610:6;10601:17;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;10660:8;10638:9;:19;10649:6;10638:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10426:250:::0;;;:::o;10190:110::-;10253:4;10277:7;:15;10285:6;10277:15;;;;;;;;;;;;;;;;;;;;;;;;;10270:22;;10190:110;;;:::o;4904:105::-;4970:7;4988:9;:18;4998:7;4988:18;;;;;;;;;;;;;;;;4981:25;;4904:105;;;:::o;2159:134::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2235:1:::1;2218:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2253:32;2282:1;2253:32;;;;;;:::i;:::-;;;;;;;;2159:134::o:0;11064:101::-;11114:7;11141:16;;;;;;;;;;;11134:23;;11064:101;:::o;11174:254::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;11254:5:::1;:16;11260:9;11254:16;;;;;;;;;;;;;;;;;;;;;;;;;11253:17;11245:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;11336:9;11309:16;;:37;;;;;;;;;;;;;;;;;;11378:4;11357:7;:18;11365:9;11357:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;11416:4;11393:9;:20;11403:9;11393:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;11174:254:::0;:::o;7308:129::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;7372:12:::1;;;;;;;;;;;7371:13;7363:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7415:14;:12;:14::i;:::-;7308:129::o:0;10306:114::-;10371:4;10395:9;:17;10405:6;10395:17;;;;;;;;;;;;;;;;;;;;;;;;;10388:24;;10306:114;;;:::o;1914:79::-;1952:7;1979:6;;;;;;;;;;;1972:13;;1914:79;:::o;4728:84::-;4778:13;4802:7;;;;;;;;;;;;;;;;;4795:14;;4728:84;:::o;12309:436::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12471:10:::1;12445:36;;12460:8;12445:23;;2432:1;2493:2;:13;;;;:::i;:::-;2480:9;:27;;;;:::i;:::-;12445:23;;;;:::i;:::-;:36;;;;:::i;:::-;12431:11;:50;;;;12532:10;12506:36;;12521:8;12506:23;;2432:1;2493:2;:13;;;;:::i;:::-;2480:9;:27;;;;:::i;:::-;12506:23;;;;:::i;:::-;:36;;;;:::i;:::-;12492:11;:50;;;;12574:11;;12561;;:24;;12553:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;12649:6;2432:1;2493:2;:13;;;;:::i;:::-;2480:9;:27;;;;:::i;:::-;12634:21;;;;:::i;:::-;12622:11;;:33;12614:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;12717:3;2432:1;2493:2;:13;;;;:::i;:::-;2480:9;:27;;;;:::i;:::-;12702:18;;;;:::i;:::-;12690:11;;:30;12682:55;;;;;;;;;;;;:::i;:::-;;;;;;;;;12309:436:::0;;;;:::o;5382:225::-;5462:4;5487:29;5505:10;5487:17;:29::i;:::-;5479:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;5555:44;5569:10;5581:9;5592:6;5555:13;:44::i;:::-;5548:51;;5382:225;;;;:::o;11538:96::-;11587:7;11614:12;;11607:19;;11538:96;:::o;5015:133::-;5099:7;5117:11;:19;5129:6;5117:19;;;;;;;;;;;;;;;:28;5137:7;5117:28;;;;;;;;;;;;;;;;5110:35;;5015:133;;;;:::o;6322:583::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;3924:4:::1;3911:10;;:17;;;;;;;;;;;;;;;;;;6426:1:::2;6404:24;;:10;;;;;;;;;;;:24;;;6396:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;6462:12;;;;;;;;;;;6461:13;6453:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;6525:1;6513:9;:13;:40;;;;6552:1;6530:21;:23;6513:40;6505:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;6631:1;6606:9;:24;6624:4;6606:24;;;;;;;;;;;;;;;;:26;6598:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;6700:18;;;;;;;;;;;:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6682:58;;;6749:4;6756:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6682:100;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6669:10;;:113;;;;;;;;;;;;;;;;;;6793:69;6807:9;:24;6825:4;6807:24;;;;;;;;;;;;;;;;6833:21;6856:5;6793:13;:69::i;:::-;6893:4;6873:5;:17;6879:10;;;;;;;;;;;6873:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3964:5:::1;3951:10;;:18;;;;;;;;;;;;;;;;;;6322:583::o:0;1999:154::-;1853:6;;;;;;;;;;1839:20;;:10;:20;;;1831:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;2091:8:::1;2082:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2115:30;2136:8;2115:30;;;;;;:::i;:::-;;;;;;;;1999:154:::0;:::o;11437:95::-;11481:7;11508:16;;11501:23;;11437:95;:::o;9068:275::-;9133:4;9149:16;9168:5;9149:24;;9189:12;;;;;;;;;;;9184:123;;;9220:4;9206:18;;9184:123;;;9246:7;:15;9254:6;9246:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;9265:9;:17;9275:6;9265:17;;;;;;;;;;;;;;;;;;;;;;;;;9246:36;9242:65;;;9300:4;9286:18;;9242:65;9184:123;9324:11;9317:18;;;9068:275;;;:::o;7564:931::-;7656:4;7699:1;7681:20;;:6;:20;;;7673:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;7751:12;;;;;;;;;;;7746:89;;7775:7;:15;7783:6;7775:15;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;;;7794:9;:17;7804:6;7794:17;;;;;;;;;;;;;;;;;;;;;;;;;7775:36;7767:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7746:89;7851:10;;;;;;;;;;;7850:11;:31;;;;;7865:5;:16;7871:9;7865:16;;;;;;;;;;;;;;;;;;;;;;;;;7850:31;7845:64;;;7886:20;:18;:20::i;:::-;7845:64;7951:4;7933:23;;:6;:23;;;;:53;;;;;7981:4;7960:26;;:9;:26;;;;7933:53;:73;;;;;8000:6;;;;;;;;;;7990:16;;:6;:16;;;;7933:73;7928:177;;;8032:39;8045:6;8053:9;8064:6;8032:12;:39::i;:::-;8024:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7928:177;8115:18;8136:40;8150:6;8158:9;8169:6;8136:13;:40::i;:::-;8115:61;;8187:23;8222:10;8213:6;:19;;;;:::i;:::-;8187:45;;8283:6;8263:9;:17;8273:6;8263:17;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;8243:9;:17;8253:6;8243:17;;;;;;;;;;;;;;;:46;;;;8318:1;8305:10;:14;8300:65;;;8352:10;8324:9;:24;8342:4;8324:24;;;;;;;;;;;;;;;;:38;;;;;;;:::i;:::-;;;;;;;;8300:65;8399:15;8375:9;:20;8385:9;8375:20;;;;;;;;;;;;;;;;:39;;;;;;;:::i;:::-;;;;;;;;8447:9;8430:35;;8439:6;8430:35;;;8458:6;8430:35;;;;;;:::i;:::-;;;;;;;;8483:4;8476:11;;;;7564:931;;;;;:::o;13400:364::-;13467:24;13482:8;13467:14;:24::i;:::-;13502:25;13544:1;13530:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13502:44;;13579:4;13557:8;13566:1;13557:11;;;;;;;;:::i;:::-;;;;;;;:27;;;;;;;;;;;13600:18;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13586:8;13595:1;13586:11;;;;;;;;:::i;:::-;;;;;;;:39;;;;;;;;;;;13636:18;;;;;;;;;;;:69;;;13706:8;13715:1;13717:8;13734:4;13740:15;13636:120;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13456:308;13400:364;:::o;7446:109::-;7505:4;7490:12;;:19;;;;;;;;;;;;;;;;;;7535:12;7520;:27;;;;7446:109::o;6914:385::-;7017:24;7044:8;;;;;;;;;;;7017:35;;7068:8;7063:50;;;7108:1;7081:29;;7063:50;7123:28;7138:12;7123:14;:28::i;:::-;7162:18;;;;;;;;;;;:34;;;7204:13;7229:4;7236:12;7250:1;7253;7256:16;7274:15;7162:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7006:293;6914:385;;;:::o;12754:637::-;3924:4;3911:10;;:17;;;;;;;;;;;;;;;;;;12815:27:::1;12845:24;12863:4;12845:9;:24::i;:::-;12815:54;;12911:11;;12888:19;:34;;:50;;;;;12926:12;;;;;;;;;;;12888:50;12883:501;;;12984:11;;12961:19;:34;12956:80;;13022:11;;13000:33;;12956:80;13050:21;13074:19;13050:43;;2432:1;13128:2;:13;;;;:::i;:::-;13112;:29;13108:106;;;13163:35;13184:13;13163:20;:35::i;:::-;13108:106;13228:27;13258:21;13228:51;;13319:1;13297:19;:23;13294:79;;;13324:16;;;;;;;;;;;:25;;:46;13350:19;13324:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13294:79;12941:443;;12883:501;12804:587;3964:5:::0;3951:10;;:18;;;;;;;;;;;;;;;;;;12754:637::o;8504:555::-;8608:4;8625:21;8649:4;8625:28;;8669:12;;;;;;;;;;;:34;;;;;8686:9;:17;8696:6;8686:17;;;;;;;;;;;;;;;;;;;;;;;;;8685:18;8669:34;:59;;;;;8708:9;:20;8718:9;8708:20;;;;;;;;;;;;;;;;;;;;;;;;;8707:21;8669:59;8664:354;;;8768:12;;8751:14;:29;8746:261;;;8821:5;8802:24;;8746:261;;;8867:5;:16;8873:9;8867:16;;;;;;;;;;;;;;;;;;;;;;;;;8866:17;:79;;;;;8928:16;;8911:14;8888:9;:20;8898:9;8888:20;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;:56;8866:79;8861:146;;;8986:5;8967:24;;8861:146;8746:261;8664:354;9035:16;9028:23;;;8504:555;;;;;:::o;9352:829::-;9449:7;9469:17;9503:12;;;;;;;;;;;9502:13;:32;;;;9519:7;:15;9527:6;9519:15;;;;;;;;;;;;;;;;;;;;;;;;;9502:32;:54;;;;9538:7;:18;9546:9;9538:18;;;;;;;;;;;;;;;;;;;;;;;;;9502:54;9497:650;;;9586:1;9574:13;;9497:650;;;9610:5;:13;9616:6;9610:13;;;;;;;;;;;;;;;;;;;;;;;;;9605:542;;;9696:16;;;;;;;;;;;9662:50;;9677:16;;;;;;;;;;;9662:31;;:12;;:31;;;;:::i;:::-;:50;;;;:::i;:::-;9646:12;:66;9641:399;;9769:3;9755:11;;;;;;;;;;;9746:20;;:6;:20;;;;:::i;:::-;:26;;;;:::i;:::-;9734:38;;9641:399;;;9830:16;;;;;;;;;;;9815:31;;:12;;:31;;;;:::i;:::-;9799:12;:47;9794:246;;9905:3;9889:13;;;;;;;;;;;9880:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;9868:40;;9794:246;;;9951:12;;9935;:28;9930:110;;10021:3;10005:13;;;;;;;;;;;9996:22;;:6;:22;;;;:::i;:::-;:28;;;;:::i;:::-;9984:40;;9930:110;9794:246;9641:399;9605:542;;;10062:5;:16;10068:9;10062:16;;;;;;;;;;;;;;;;;;;;;;;;;10057:90;;;10132:3;10117:12;;;;;;;;;;;10108:21;;:6;:21;;;;:::i;:::-;:27;;;;:::i;:::-;10096:39;;10057:90;9605:542;9497:650;10164:9;10157:16;;;9352:829;;;;;:::o;5996:317::-;6116:12;6067:11;:26;6087:4;6067:26;;;;;;;;;;;;;;;:46;3581:42;6067:46;;;;;;;;;;;;;;;;:61;6062:244;;;6195:17;6146:11;:26;6166:4;6146:26;;;;;;;;;;;;;;;:46;3581:42;6146:46;;;;;;;;;;;;;;;:66;;;;3581:42;6232:62;;6249:4;6232:62;;;6276:17;6232:62;;;;;;:::i;:::-;;;;;;;;6062:244;5996:317;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4924:22;4940:5;4924:22;:::i;:::-;4917:5;4914:33;4904:61;;4961:1;4958;4951:12;4904:61;4853:118;:::o;4977:135::-;5021:5;5059:6;5046:20;5037:29;;5075:31;5100:5;5075:31;:::i;:::-;4977:135;;;;:::o;5118:116::-;5188:21;5203:5;5188:21;:::i;:::-;5181:5;5178:32;5168:60;;5224:1;5221;5214:12;5168:60;5118:116;:::o;5240:133::-;5283:5;5321:6;5308:20;5299:29;;5337:30;5361:5;5337:30;:::i;:::-;5240:133;;;;:::o;5379:464::-;5442:6;5450;5499:2;5487:9;5478:7;5474:23;5470:32;5467:119;;;5505:79;;:::i;:::-;5467:119;5625:1;5650:51;5693:7;5684:6;5673:9;5669:22;5650:51;:::i;:::-;5640:61;;5596:115;5750:2;5776:50;5818:7;5809:6;5798:9;5794:22;5776:50;:::i;:::-;5766:60;;5721:115;5379:464;;;;;:::o;5849:89::-;5885:7;5925:6;5918:5;5914:18;5903:29;;5849:89;;;:::o;5944:120::-;6016:23;6033:5;6016:23;:::i;:::-;6009:5;6006:34;5996:62;;6054:1;6051;6044:12;5996:62;5944:120;:::o;6070:137::-;6115:5;6153:6;6140:20;6131:29;;6169:32;6195:5;6169:32;:::i;:::-;6070:137;;;;:::o;6213:470::-;6279:6;6287;6336:2;6324:9;6315:7;6311:23;6307:32;6304:119;;;6342:79;;:::i;:::-;6304:119;6462:1;6487:52;6531:7;6522:6;6511:9;6507:22;6487:52;:::i;:::-;6477:62;;6433:116;6588:2;6614:52;6658:7;6649:6;6638:9;6634:22;6614:52;:::i;:::-;6604:62;;6559:117;6213:470;;;;;:::o;6689:466::-;6753:6;6761;6810:2;6798:9;6789:7;6785:23;6781:32;6778:119;;;6816:79;;:::i;:::-;6778:119;6936:1;6961:51;7004:7;6995:6;6984:9;6980:22;6961:51;:::i;:::-;6951:61;;6907:115;7061:2;7087:51;7130:7;7121:6;7110:9;7106:22;7087:51;:::i;:::-;7077:61;;7032:116;6689:466;;;;;:::o;7161:607::-;7232:6;7240;7248;7297:2;7285:9;7276:7;7272:23;7268:32;7265:119;;;7303:79;;:::i;:::-;7265:119;7423:1;7448:53;7493:7;7484:6;7473:9;7469:22;7448:53;:::i;:::-;7438:63;;7394:117;7550:2;7576:50;7618:7;7609:6;7598:9;7594:22;7576:50;:::i;:::-;7566:60;;7521:115;7675:2;7701:50;7743:7;7734:6;7723:9;7719:22;7701:50;:::i;:::-;7691:60;;7646:115;7161:607;;;;;:::o;7774:329::-;7833:6;7882:2;7870:9;7861:7;7857:23;7853:32;7850:119;;;7888:79;;:::i;:::-;7850:119;8008:1;8033:53;8078:7;8069:6;8058:9;8054:22;8033:53;:::i;:::-;8023:63;;7979:117;7774:329;;;;:::o;8109:118::-;8196:24;8214:5;8196:24;:::i;:::-;8191:3;8184:37;8109:118;;:::o;8233:222::-;8326:4;8364:2;8353:9;8349:18;8341:26;;8377:71;8445:1;8434:9;8430:17;8421:6;8377:71;:::i;:::-;8233:222;;;;:::o;8461:93::-;8497:7;8537:10;8530:5;8526:22;8515:33;;8461:93;;;:::o;8560:120::-;8632:23;8649:5;8632:23;:::i;:::-;8625:5;8622:34;8612:62;;8670:1;8667;8660:12;8612:62;8560:120;:::o;8686:137::-;8731:5;8769:6;8756:20;8747:29;;8785:32;8811:5;8785:32;:::i;:::-;8686:137;;;;:::o;8829:757::-;8911:6;8919;8927;8935;8984:3;8972:9;8963:7;8959:23;8955:33;8952:120;;;8991:79;;:::i;:::-;8952:120;9111:1;9136:52;9180:7;9171:6;9160:9;9156:22;9136:52;:::i;:::-;9126:62;;9082:116;9237:2;9263:52;9307:7;9298:6;9287:9;9283:22;9263:52;:::i;:::-;9253:62;;9208:117;9364:2;9390:52;9434:7;9425:6;9414:9;9410:22;9390:52;:::i;:::-;9380:62;;9335:117;9491:2;9517:52;9561:7;9552:6;9541:9;9537:22;9517:52;:::i;:::-;9507:62;;9462:117;8829:757;;;;;;;:::o;9592:474::-;9660:6;9668;9717:2;9705:9;9696:7;9692:23;9688:32;9685:119;;;9723:79;;:::i;:::-;9685:119;9843:1;9868:53;9913:7;9904:6;9893:9;9889:22;9868:53;:::i;:::-;9858:63;;9814:117;9970:2;9996:53;10041:7;10032:6;10021:9;10017:22;9996:53;:::i;:::-;9986:63;;9941:118;9592:474;;;;;:::o;10072:104::-;10117:7;10146:24;10164:5;10146:24;:::i;:::-;10135:35;;10072:104;;;:::o;10182:138::-;10263:32;10289:5;10263:32;:::i;:::-;10256:5;10253:43;10243:71;;10310:1;10307;10300:12;10243:71;10182:138;:::o;10326:155::-;10380:5;10418:6;10405:20;10396:29;;10434:41;10469:5;10434:41;:::i;:::-;10326:155;;;;:::o;10487:345::-;10554:6;10603:2;10591:9;10582:7;10578:23;10574:32;10571:119;;;10609:79;;:::i;:::-;10571:119;10729:1;10754:61;10807:7;10798:6;10787:9;10783:22;10754:61;:::i;:::-;10744:71;;10700:125;10487:345;;;;:::o;10838:180::-;10886:77;10883:1;10876:88;10983:4;10980:1;10973:15;11007:4;11004:1;10997:15;11024:102;11066:8;11113:5;11110:1;11106:13;11085:34;;11024:102;;;:::o;11132:848::-;11193:5;11200:4;11224:6;11215:15;;11248:5;11239:14;;11262:712;11283:1;11273:8;11270:15;11262:712;;;11378:4;11373:3;11369:14;11363:4;11360:24;11357:50;;;11387:18;;:::i;:::-;11357:50;11437:1;11427:8;11423:16;11420:451;;;11852:4;11845:5;11841:16;11832:25;;11420:451;11902:4;11896;11892:15;11884:23;;11932:32;11955:8;11932:32;:::i;:::-;11920:44;;11262:712;;;11132:848;;;;;;;:::o;11986:1073::-;12040:5;12231:8;12221:40;;12252:1;12243:10;;12254:5;;12221:40;12280:4;12270:36;;12297:1;12288:10;;12299:5;;12270:36;12366:4;12414:1;12409:27;;;;12450:1;12445:191;;;;12359:277;;12409:27;12427:1;12418:10;;12429:5;;;12445:191;12490:3;12480:8;12477:17;12474:43;;;12497:18;;:::i;:::-;12474:43;12546:8;12543:1;12539:16;12530:25;;12581:3;12574:5;12571:14;12568:40;;;12588:18;;:::i;:::-;12568:40;12621:5;;;12359:277;;12745:2;12735:8;12732:16;12726:3;12720:4;12717:13;12713:36;12695:2;12685:8;12682:16;12677:2;12671:4;12668:12;12664:35;12648:111;12645:246;;;12801:8;12795:4;12791:19;12782:28;;12836:3;12829:5;12826:14;12823:40;;;12843:18;;:::i;:::-;12823:40;12876:5;;12645:246;12916:42;12954:3;12944:8;12938:4;12935:1;12916:42;:::i;:::-;12901:57;;;;12990:4;12985:3;12981:14;12974:5;12971:25;12968:51;;;12999:18;;:::i;:::-;12968:51;13048:4;13041:5;13037:16;13028:25;;11986:1073;;;;;;:::o;13065:281::-;13123:5;13147:23;13165:4;13147:23;:::i;:::-;13139:31;;13191:25;13207:8;13191:25;:::i;:::-;13179:37;;13235:104;13272:66;13262:8;13256:4;13235:104;:::i;:::-;13226:113;;13065:281;;;;:::o;13352:410::-;13392:7;13415:20;13433:1;13415:20;:::i;:::-;13410:25;;13449:20;13467:1;13449:20;:::i;:::-;13444:25;;13504:1;13501;13497:9;13526:30;13544:11;13526:30;:::i;:::-;13515:41;;13705:1;13696:7;13692:15;13689:1;13686:22;13666:1;13659:9;13639:83;13616:139;;13735:18;;:::i;:::-;13616:139;13400:362;13352:410;;;;:::o;13768:166::-;13908:18;13904:1;13896:6;13892:14;13885:42;13768:166;:::o;13940:366::-;14082:3;14103:67;14167:2;14162:3;14103:67;:::i;:::-;14096:74;;14179:93;14268:3;14179:93;:::i;:::-;14297:2;14292:3;14288:12;14281:19;;13940:366;;;:::o;14312:419::-;14478:4;14516:2;14505:9;14501:18;14493:26;;14565:9;14559:4;14555:20;14551:1;14540:9;14536:17;14529:47;14593:131;14719:4;14593:131;:::i;:::-;14585:139;;14312:419;;;:::o;14737:194::-;14777:4;14797:20;14815:1;14797:20;:::i;:::-;14792:25;;14831:20;14849:1;14831:20;:::i;:::-;14826:25;;14875:1;14872;14868:9;14860:17;;14899:1;14893:4;14890:11;14887:37;;;14904:18;;:::i;:::-;14887:37;14737:194;;;;:::o;14937:174::-;15077:26;15073:1;15065:6;15061:14;15054:50;14937:174;:::o;15117:366::-;15259:3;15280:67;15344:2;15339:3;15280:67;:::i;:::-;15273:74;;15356:93;15445:3;15356:93;:::i;:::-;15474:2;15469:3;15465:12;15458:19;;15117:366;;;:::o;15489:419::-;15655:4;15693:2;15682:9;15678:18;15670:26;;15742:9;15736:4;15732:20;15728:1;15717:9;15713:17;15706:47;15770:131;15896:4;15770:131;:::i;:::-;15762:139;;15489:419;;;:::o;15914:176::-;16054:28;16050:1;16042:6;16038:14;16031:52;15914:176;:::o;16096:366::-;16238:3;16259:67;16323:2;16318:3;16259:67;:::i;:::-;16252:74;;16335:93;16424:3;16335:93;:::i;:::-;16453:2;16448:3;16444:12;16437:19;;16096:366;;;:::o;16468:419::-;16634:4;16672:2;16661:9;16657:18;16649:26;;16721:9;16715:4;16711:20;16707:1;16696:9;16692:17;16685:47;16749:131;16875:4;16749:131;:::i;:::-;16741:139;;16468:419;;;:::o;16893:180::-;16941:77;16938:1;16931:88;17038:4;17035:1;17028:15;17062:4;17059:1;17052:15;17079:185;17119:1;17136:20;17154:1;17136:20;:::i;:::-;17131:25;;17170:20;17188:1;17170:20;:::i;:::-;17165:25;;17209:1;17199:35;;17214:18;;:::i;:::-;17199:35;17256:1;17253;17249:9;17244:14;;17079:185;;;;:::o;17270:156::-;17410:8;17406:1;17398:6;17394:14;17387:32;17270:156;:::o;17432:365::-;17574:3;17595:66;17659:1;17654:3;17595:66;:::i;:::-;17588:73;;17670:93;17759:3;17670:93;:::i;:::-;17788:2;17783:3;17779:12;17772:19;;17432:365;;;:::o;17803:419::-;17969:4;18007:2;17996:9;17992:18;17984:26;;18056:9;18050:4;18046:20;18042:1;18031:9;18027:17;18020:47;18084:131;18210:4;18084:131;:::i;:::-;18076:139;;17803:419;;;:::o;18228:191::-;18268:3;18287:20;18305:1;18287:20;:::i;:::-;18282:25;;18321:20;18339:1;18321:20;:::i;:::-;18316:25;;18364:1;18361;18357:9;18350:16;;18385:3;18382:1;18379:10;18376:36;;;18392:18;;:::i;:::-;18376:36;18228:191;;;;:::o;18425:160::-;18565:12;18561:1;18553:6;18549:14;18542:36;18425:160;:::o;18591:366::-;18733:3;18754:67;18818:2;18813:3;18754:67;:::i;:::-;18747:74;;18830:93;18919:3;18830:93;:::i;:::-;18948:2;18943:3;18939:12;18932:19;;18591:366;;;:::o;18963:419::-;19129:4;19167:2;19156:9;19152:18;19144:26;;19216:9;19210:4;19206:20;19202:1;19191:9;19187:17;19180:47;19244:131;19370:4;19244:131;:::i;:::-;19236:139;;18963:419;;;:::o;19388:164::-;19528:16;19524:1;19516:6;19512:14;19505:40;19388:164;:::o;19558:366::-;19700:3;19721:67;19785:2;19780:3;19721:67;:::i;:::-;19714:74;;19797:93;19886:3;19797:93;:::i;:::-;19915:2;19910:3;19906:12;19899:19;;19558:366;;;:::o;19930:419::-;20096:4;20134:2;20123:9;20119:18;20111:26;;20183:9;20177:4;20173:20;20169:1;20158:9;20154:17;20147:47;20211:131;20337:4;20211:131;:::i;:::-;20203:139;;19930:419;;;:::o;20355:188::-;20393:3;20412:18;20428:1;20412:18;:::i;:::-;20407:23;;20444:18;20460:1;20444:18;:::i;:::-;20439:23;;20485:1;20482;20478:9;20471:16;;20508:4;20503:3;20500:13;20497:39;;;20516:18;;:::i;:::-;20497:39;20355:188;;;;:::o;20549:168::-;20689:20;20685:1;20677:6;20673:14;20666:44;20549:168;:::o;20723:366::-;20865:3;20886:67;20950:2;20945:3;20886:67;:::i;:::-;20879:74;;20962:93;21051:3;20962:93;:::i;:::-;21080:2;21075:3;21071:12;21064:19;;20723:366;;;:::o;21095:419::-;21261:4;21299:2;21288:9;21284:18;21276:26;;21348:9;21342:4;21338:20;21334:1;21323:9;21319:17;21312:47;21376:131;21502:4;21376:131;:::i;:::-;21368:139;;21095:419;;;:::o;21520:166::-;21660:18;21656:1;21648:6;21644:14;21637:42;21520:166;:::o;21692:366::-;21834:3;21855:67;21919:2;21914:3;21855:67;:::i;:::-;21848:74;;21931:93;22020:3;21931:93;:::i;:::-;22049:2;22044:3;22040:12;22033:19;;21692:366;;;:::o;22064:419::-;22230:4;22268:2;22257:9;22253:18;22245:26;;22317:9;22311:4;22307:20;22303:1;22292:9;22288:17;22281:47;22345:131;22471:4;22345:131;:::i;:::-;22337:139;;22064:419;;;:::o;22489:173::-;22629:25;22625:1;22617:6;22613:14;22606:49;22489:173;:::o;22668:366::-;22810:3;22831:67;22895:2;22890:3;22831:67;:::i;:::-;22824:74;;22907:93;22996:3;22907:93;:::i;:::-;23025:2;23020:3;23016:12;23009:19;;22668:366;;;:::o;23040:419::-;23206:4;23244:2;23233:9;23229:18;23221:26;;23293:9;23287:4;23283:20;23279:1;23268:9;23264:17;23257:47;23321:131;23447:4;23321:131;:::i;:::-;23313:139;;23040:419;;;:::o;23465:165::-;23605:17;23601:1;23593:6;23589:14;23582:41;23465:165;:::o;23636:366::-;23778:3;23799:67;23863:2;23858:3;23799:67;:::i;:::-;23792:74;;23875:93;23964:3;23875:93;:::i;:::-;23993:2;23988:3;23984:12;23977:19;;23636:366;;;:::o;24008:419::-;24174:4;24212:2;24201:9;24197:18;24189:26;;24261:9;24255:4;24251:20;24247:1;24236:9;24232:17;24225:47;24289:131;24415:4;24289:131;:::i;:::-;24281:139;;24008:419;;;:::o;24433:163::-;24573:15;24569:1;24561:6;24557:14;24550:39;24433:163;:::o;24602:366::-;24744:3;24765:67;24829:2;24824:3;24765:67;:::i;:::-;24758:74;;24841:93;24930:3;24841:93;:::i;:::-;24959:2;24954:3;24950:12;24943:19;;24602:366;;;:::o;24974:419::-;25140:4;25178:2;25167:9;25163:18;25155:26;;25227:9;25221:4;25217:20;25213:1;25202:9;25198:17;25191:47;25255:131;25381:4;25255:131;:::i;:::-;25247:139;;24974:419;;;:::o;25399:161::-;25539:13;25535:1;25527:6;25523:14;25516:37;25399:161;:::o;25566:366::-;25708:3;25729:67;25793:2;25788:3;25729:67;:::i;:::-;25722:74;;25805:93;25894:3;25805:93;:::i;:::-;25923:2;25918:3;25914:12;25907:19;;25566:366;;;:::o;25938:419::-;26104:4;26142:2;26131:9;26127:18;26119:26;;26191:9;26185:4;26181:20;26177:1;26166:9;26162:17;26155:47;26219:131;26345:4;26219:131;:::i;:::-;26211:139;;25938:419;;;:::o;26363:162::-;26503:14;26499:1;26491:6;26487:14;26480:38;26363:162;:::o;26531:366::-;26673:3;26694:67;26758:2;26753:3;26694:67;:::i;:::-;26687:74;;26770:93;26859:3;26770:93;:::i;:::-;26888:2;26883:3;26879:12;26872:19;;26531:366;;;:::o;26903:419::-;27069:4;27107:2;27096:9;27092:18;27084:26;;27156:9;27150:4;27146:20;27142:1;27131:9;27127:17;27120:47;27184:131;27310:4;27184:131;:::i;:::-;27176:139;;26903:419;;;:::o;27328:159::-;27468:11;27464:1;27456:6;27452:14;27445:35;27328:159;:::o;27493:365::-;27635:3;27656:66;27720:1;27715:3;27656:66;:::i;:::-;27649:73;;27731:93;27820:3;27731:93;:::i;:::-;27849:2;27844:3;27840:12;27833:19;;27493:365;;;:::o;27864:419::-;28030:4;28068:2;28057:9;28053:18;28045:26;;28117:9;28111:4;28107:20;28103:1;28092:9;28088:17;28081:47;28145:131;28271:4;28145:131;:::i;:::-;28137:139;;27864:419;;;:::o;28289:179::-;28429:31;28425:1;28417:6;28413:14;28406:55;28289:179;:::o;28474:366::-;28616:3;28637:67;28701:2;28696:3;28637:67;:::i;:::-;28630:74;;28713:93;28802:3;28713:93;:::i;:::-;28831:2;28826:3;28822:12;28815:19;;28474:366;;;:::o;28846:419::-;29012:4;29050:2;29039:9;29035:18;29027:26;;29099:9;29093:4;29089:20;29085:1;29074:9;29070:17;29063:47;29127:131;29253:4;29127:131;:::i;:::-;29119:139;;28846:419;;;:::o;29271:171::-;29411:23;29407:1;29399:6;29395:14;29388:47;29271:171;:::o;29448:366::-;29590:3;29611:67;29675:2;29670:3;29611:67;:::i;:::-;29604:74;;29687:93;29776:3;29687:93;:::i;:::-;29805:2;29800:3;29796:12;29789:19;;29448:366;;;:::o;29820:419::-;29986:4;30024:2;30013:9;30009:18;30001:26;;30073:9;30067:4;30063:20;30059:1;30048:9;30044:17;30037:47;30101:131;30227:4;30101:131;:::i;:::-;30093:139;;29820:419;;;:::o;30245:143::-;30302:5;30333:6;30327:13;30318:22;;30349:33;30376:5;30349:33;:::i;:::-;30245:143;;;;:::o;30394:351::-;30464:6;30513:2;30501:9;30492:7;30488:23;30484:32;30481:119;;;30519:79;;:::i;:::-;30481:119;30639:1;30664:64;30720:7;30711:6;30700:9;30696:22;30664:64;:::i;:::-;30654:74;;30610:128;30394:351;;;;:::o;30751:332::-;30872:4;30910:2;30899:9;30895:18;30887:26;;30923:71;30991:1;30980:9;30976:17;30967:6;30923:71;:::i;:::-;31004:72;31072:2;31061:9;31057:18;31048:6;31004:72;:::i;:::-;30751:332;;;;;:::o;31089:60::-;31117:3;31138:5;31131:12;;31089:60;;;:::o;31155:142::-;31205:9;31238:53;31256:34;31265:24;31283:5;31265:24;:::i;:::-;31256:34;:::i;:::-;31238:53;:::i;:::-;31225:66;;31155:142;;;:::o;31303:126::-;31353:9;31386:37;31417:5;31386:37;:::i;:::-;31373:50;;31303:126;;;:::o;31435:134::-;31493:9;31526:37;31557:5;31526:37;:::i;:::-;31513:50;;31435:134;;;:::o;31575:147::-;31670:45;31709:5;31670:45;:::i;:::-;31665:3;31658:58;31575:147;;:::o;31728:238::-;31829:4;31867:2;31856:9;31852:18;31844:26;;31880:79;31956:1;31945:9;31941:17;31932:6;31880:79;:::i;:::-;31728:238;;;;:::o;31972:179::-;32112:31;32108:1;32100:6;32096:14;32089:55;31972:179;:::o;32157:366::-;32299:3;32320:67;32384:2;32379:3;32320:67;:::i;:::-;32313:74;;32396:93;32485:3;32396:93;:::i;:::-;32514:2;32509:3;32505:12;32498:19;;32157:366;;;:::o;32529:419::-;32695:4;32733:2;32722:9;32718:18;32710:26;;32782:9;32776:4;32772:20;32768:1;32757:9;32753:17;32746:47;32810:131;32936:4;32810:131;:::i;:::-;32802:139;;32529:419;;;:::o;32954:167::-;33094:19;33090:1;33082:6;33078:14;33071:43;32954:167;:::o;33127:366::-;33269:3;33290:67;33354:2;33349:3;33290:67;:::i;:::-;33283:74;;33366:93;33455:3;33366:93;:::i;:::-;33484:2;33479:3;33475:12;33468:19;;33127:366;;;:::o;33499:419::-;33665:4;33703:2;33692:9;33688:18;33680:26;;33752:9;33746:4;33742:20;33738:1;33727:9;33723:17;33716:47;33780:131;33906:4;33780:131;:::i;:::-;33772:139;;33499:419;;;:::o;33924:180::-;33972:77;33969:1;33962:88;34069:4;34066:1;34059:15;34093:4;34090:1;34083:15;34110:180;34158:77;34155:1;34148:88;34255:4;34252:1;34245:15;34279:4;34276:1;34269:15;34296:85;34341:7;34370:5;34359:16;;34296:85;;;:::o;34387:158::-;34445:9;34478:61;34496:42;34505:32;34531:5;34505:32;:::i;:::-;34496:42;:::i;:::-;34478:61;:::i;:::-;34465:74;;34387:158;;;:::o;34551:147::-;34646:45;34685:5;34646:45;:::i;:::-;34641:3;34634:58;34551:147;;:::o;34704:114::-;34771:6;34805:5;34799:12;34789:22;;34704:114;;;:::o;34824:184::-;34923:11;34957:6;34952:3;34945:19;34997:4;34992:3;34988:14;34973:29;;34824:184;;;;:::o;35014:132::-;35081:4;35104:3;35096:11;;35134:4;35129:3;35125:14;35117:22;;35014:132;;;:::o;35152:108::-;35229:24;35247:5;35229:24;:::i;:::-;35224:3;35217:37;35152:108;;:::o;35266:179::-;35335:10;35356:46;35398:3;35390:6;35356:46;:::i;:::-;35434:4;35429:3;35425:14;35411:28;;35266:179;;;;:::o;35451:113::-;35521:4;35553;35548:3;35544:14;35536:22;;35451:113;;;:::o;35600:732::-;35719:3;35748:54;35796:5;35748:54;:::i;:::-;35818:86;35897:6;35892:3;35818:86;:::i;:::-;35811:93;;35928:56;35978:5;35928:56;:::i;:::-;36007:7;36038:1;36023:284;36048:6;36045:1;36042:13;36023:284;;;36124:6;36118:13;36151:63;36210:3;36195:13;36151:63;:::i;:::-;36144:70;;36237:60;36290:6;36237:60;:::i;:::-;36227:70;;36083:224;36070:1;36067;36063:9;36058:14;;36023:284;;;36027:14;36323:3;36316:10;;35724:608;;;35600:732;;;;:::o;36338:831::-;36601:4;36639:3;36628:9;36624:19;36616:27;;36653:71;36721:1;36710:9;36706:17;36697:6;36653:71;:::i;:::-;36734:80;36810:2;36799:9;36795:18;36786:6;36734:80;:::i;:::-;36861:9;36855:4;36851:20;36846:2;36835:9;36831:18;36824:48;36889:108;36992:4;36983:6;36889:108;:::i;:::-;36881:116;;37007:72;37075:2;37064:9;37060:18;37051:6;37007:72;:::i;:::-;37089:73;37157:3;37146:9;37142:19;37133:6;37089:73;:::i;:::-;36338:831;;;;;;;;:::o;37175:807::-;37424:4;37462:3;37451:9;37447:19;37439:27;;37476:71;37544:1;37533:9;37529:17;37520:6;37476:71;:::i;:::-;37557:72;37625:2;37614:9;37610:18;37601:6;37557:72;:::i;:::-;37639:80;37715:2;37704:9;37700:18;37691:6;37639:80;:::i;:::-;37729;37805:2;37794:9;37790:18;37781:6;37729:80;:::i;:::-;37819:73;37887:3;37876:9;37872:19;37863:6;37819:73;:::i;:::-;37902;37970:3;37959:9;37955:19;37946:6;37902:73;:::i;:::-;37175:807;;;;;;;;;:::o;37988:143::-;38045:5;38076:6;38070:13;38061:22;;38092:33;38119:5;38092:33;:::i;:::-;37988:143;;;;:::o;38137:663::-;38225:6;38233;38241;38290:2;38278:9;38269:7;38265:23;38261:32;38258:119;;;38296:79;;:::i;:::-;38258:119;38416:1;38441:64;38497:7;38488:6;38477:9;38473:22;38441:64;:::i;:::-;38431:74;;38387:128;38554:2;38580:64;38636:7;38627:6;38616:9;38612:22;38580:64;:::i;:::-;38570:74;;38525:129;38693:2;38719:64;38775:7;38766:6;38755:9;38751:22;38719:64;:::i;:::-;38709:74;;38664:129;38137:663;;;;;:::o

Swarm Source

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