ETH Price: $3,701.14 (+4.39%)

Token

ERC-20: Trump Vs Harris (ELECTION)
 

Overview

Max Total Supply

1,000,000,000 ELECTION

Holders

69

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
4,000,000 ELECTION

Value
$0.00
0x440BD23858e50918895171F24D4e142E5A1Abe39
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:
ELECTION

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: UNLICENSE
// This token was deployed on Telegram Using @TitanDeployerBot
/*
Telegram: https://t.me/TRUMPVSHARRISTOKEN
X: https://x.com/TRUMPVSHARRISET
Website: https://www.electioneth.xyz

*/
pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

contract ELECTION is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

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

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = unicode"Trump Vs Harris";
    string private constant _symbol = unicode"ELECTION";
    uint256 public _maxTxAmount = 20000000 * 10**_decimals;
    uint256 public _maxWalletSize = 30000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 10000000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool public tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event OpenTrade(address indexed owner, uint256 timestamp);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

    function getTaxDetails() public view returns (
        uint256 initialBuyTax,
        uint256 initialSellTax,
        uint256 finalBuyTax,
        uint256 finalSellTax,
        uint256 transferTax
        ) {
            return (
                _initialBuyTax,
                _initialSellTax,
                _finalBuyTax,
                _finalSellTax,
                _transferTax
            );
    }

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

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

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

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

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

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner() && to != _taxWallet) {
            require(!bots[from] && !bots[to]);

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

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

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

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

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


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

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

    function removeLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

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

    function addBot(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBot(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

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

    function openTrade() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;

        emit OpenTrade(owner(), block.timestamp);
    }

    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

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

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0 && swapEnabled){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(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":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"OpenTrade","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTaxDetails","outputs":[{"internalType":"uint256","name":"initialBuyTax","type":"uint256"},{"internalType":"uint256","name":"initialSellTax","type":"uint256"},{"internalType":"uint256","name":"finalBuyTax","type":"uint256"},{"internalType":"uint256","name":"finalSellTax","type":"uint256"},{"internalType":"uint256","name":"transferTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTranTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601460065560146007555f6008555f6009556001600a556001600b556001600c556014600d555f600e556009600a6200003e9190620005fd565b6301312d006200004f91906200064d565b600f556009600a620000629190620005fd565b6301c9c3806200007391906200064d565b6010556009600a620000869190620005fd565b620f42406200009691906200064d565b6011556009600a620000a99190620005fd565b62989680620000b991906200064d565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f60165534801562000104575f80fd5b505f620001166200043d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001c26200043d60201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620002119190620005fd565b633b9aca006200022291906200064d565b60015f620002356200043d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002876200044460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003b16200043d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200040f9190620005fd565b633b9aca006200042091906200064d565b6040516200042f9190620006a8565b60405180910390a3620006c3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004f557808604811115620004cd57620004cc6200046b565b5b6001851615620004dd5780820291505b8081029050620004ed8562000498565b9450620004ad565b94509492505050565b5f826200050f5760019050620005e1565b816200051e575f9050620005e1565b8160018114620005375760028114620005425762000578565b6001915050620005e1565b60ff8411156200055757620005566200046b565b5b8360020a9150848211156200057157620005706200046b565b5b50620005e1565b5060208310610133831016604e8410600b8410161715620005b25782820a905083811115620005ac57620005ab6200046b565b5b620005e1565b620005c18484846001620004a4565b92509050818404811115620005db57620005da6200046b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200060982620005e8565b91506200061683620005f1565b9250620006457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004fe565b905092915050565b5f6200065982620005e8565b91506200066683620005e8565b92508282026200067681620005e8565b9150828204841483151762000690576200068f6200046b565b5b5092915050565b620006a281620005e8565b82525050565b5f602082019050620006bd5f83018462000697565b92915050565b6139a180620006d15f395ff3fe608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610533578063ec1f3f631461056f578063fb201b1d14610597578063ffb54a99146105ad5761018b565b8063a9059cbb146104a5578063bf474bed146104e1578063c97c18211461050b5761018b565b8063715018a6146103bf5780637d1db4a5146103d55780638cd4426d146103ff5780638da5cb5b146104275780638f9a55c01461045157806395d89b411461047b5761018b565b806321bbcbb11161013d5780633bbac579116101175780633bbac5791461031b57806351bc3c8514610357578063622565891461036d57806370a08231146103835761018b565b806321bbcbb11461028d57806323b872dd146102b5578063313ce567146102f15761018b565b806302fa1f4a1461018f57806306fdde03146101a5578063095ea7b3146101cf5780630faee56f1461020b57806318160ddd146102355780631fee58941461025f5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105d7565b005b3480156101b0575f80fd5b506101b96106ab565b6040516101c6919061283f565b60405180910390f35b3480156101da575f80fd5b506101f560048036038101906101f091906128fd565b6106e8565b6040516102029190612955565b60405180910390f35b348015610216575f80fd5b5061021f610705565b60405161022c919061297d565b60405180910390f35b348015610240575f80fd5b5061024961070b565b604051610256919061297d565b60405180910390f35b34801561026a575f80fd5b5061027361072e565b604051610284959493929190612996565b60405180910390f35b348015610298575f80fd5b506102b360048036038101906102ae9190612b27565b610753565b005b3480156102c0575f80fd5b506102db60048036038101906102d69190612b6e565b610872565b6040516102e89190612955565b60405180910390f35b3480156102fc575f80fd5b50610305610946565b6040516103129190612bd9565b60405180910390f35b348015610326575f80fd5b50610341600480360381019061033c9190612bf2565b61094e565b60405161034e9190612955565b60405180910390f35b348015610362575f80fd5b5061036b6109a0565b005b348015610378575f80fd5b50610381610a4f565b005b34801561038e575f80fd5b506103a960048036038101906103a49190612bf2565b610b7e565b6040516103b6919061297d565b60405180910390f35b3480156103ca575f80fd5b506103d3610bc4565b005b3480156103e0575f80fd5b506103e9610d12565b6040516103f6919061297d565b60405180910390f35b34801561040a575f80fd5b50610425600480360381019061042091906128fd565b610d18565b005b348015610432575f80fd5b5061043b610eb9565b6040516104489190612c2c565b60405180910390f35b34801561045c575f80fd5b50610465610ee0565b604051610472919061297d565b60405180910390f35b348015610486575f80fd5b5061048f610ee6565b60405161049c919061283f565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c691906128fd565b610f23565b6040516104d89190612955565b60405180910390f35b3480156104ec575f80fd5b506104f5610f40565b604051610502919061297d565b60405180910390f35b348015610516575f80fd5b50610531600480360381019061052c9190612b27565b610f46565b005b34801561053e575f80fd5b5061055960048036038101906105549190612c45565b611064565b604051610566919061297d565b60405180910390f35b34801561057a575f80fd5b5061059560048036038101906105909190612c83565b6110e6565b005b3480156105a2575f80fd5b506105ab611172565b005b3480156105b8575f80fd5b506105c16116e6565b6040516105ce9190612955565b60405180910390f35b6105df6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290612cf8565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106a19190612d58565b60405180910390a1565b60606040518060400160405280600f81526020017f5472756d70205673204861727269730000000000000000000000000000000000815250905090565b5f6106fb6106f46116f7565b84846116fe565b6001905092915050565b60125481565b5f6009600a61071a9190612ecd565b633b9aca006107299190612f17565b905090565b5f805f805f600654600754600854600954600d54945094509450945094509091929394565b61075b6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107de90612cf8565b60405180910390fd5b5f5b815181101561086e57600160045f84848151811061080a57610809612f58565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107e9565b5050565b5f61087e8484846118c1565b61093b8461088a6116f7565b610936856040518060600160405280602881526020016139446028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108ed6116f7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a19092919063ffffffff16565b6116fe565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e06116f7565b73ffffffffffffffffffffffffffffffffffffffff16146109ff575f80fd5b5f610a0930610b7e565b90505f81118015610a265750601460169054906101000a900460ff165b15610a3557610a3481612303565b5b5f4790505f811115610a4b57610a4a8161256e565b5b5050565b610a576116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90612cf8565b60405180910390fd5b6009600a610af19190612ecd565b633b9aca00610b009190612f17565b600f819055506009600a610b149190612ecd565b633b9aca00610b239190612f17565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b589190612ecd565b633b9aca00610b679190612f17565b604051610b74919061297d565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bcc6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90612cf8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d586116f7565b73ffffffffffffffffffffffffffffffffffffffff1614610d77575f80fd5b5f610e156064610e07848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dba9190612c2c565b602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190612f99565b6125d690919063ffffffff16565b61264d90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e73929190613016565b6020604051808303815f875af1158015610e8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb39190613067565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600881526020017f454c454354494f4e000000000000000000000000000000000000000000000000815250905090565b5f610f36610f2f6116f7565b84846118c1565b6001905092915050565b60115481565b610f4e6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190612cf8565b60405180910390fd5b5f5b8151811015611060575f60045f848481518110610ffc57610ffb612f58565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fdc565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111266116f7565b73ffffffffffffffffffffffffffffffffffffffff1614611145575f80fd5b600854811115801561115957506009548111155b611161575f80fd5b806008819055508060098190555050565b61117a6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd90612cf8565b60405180910390fd5b60148054906101000a900460ff1615611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b906130dc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112f03060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6112dc9190612ecd565b633b9aca006112eb9190612f17565b6116fe565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137e919061310e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611404573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611428919061310e565b6040518363ffffffff1660e01b8152600401611445929190613139565b6020604051808303815f875af1158015611461573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611485919061310e565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061150c30610b7e565b5f80611516610eb9565b426040518863ffffffff1660e01b815260040161153896959493929190613160565b60606040518083038185885af1158015611554573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061157991906131bf565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161161992919061320f565b6020604051808303815f875af1158015611635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116599190613067565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550611697610eb9565b73ffffffffffffffffffffffffffffffffffffffff167ff9ca0f11181041c16343c0e2d0e0c3cf66188e39b033ab29e2fe6f0f84374a36426040516116dc919061297d565b60405180910390a2565b60148054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611763906132a6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190613334565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118b4919061297d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611926906133c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199490613450565b60405180910390fd5b5f81116119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d6906134de565b60405180910390fd5b5f6119e8610eb9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a565750611a26610eb9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611aaf575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff15760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b52575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b5a575f80fd5b5f600e5403611ba257611b9f6064611b91600a54600e5411611b7e57600654611b82565b6008545b856125d690919063ffffffff16565b61264d90919063ffffffff16565b90505b5f600e541115611bd757611bd46064611bc6600d54856125d690919063ffffffff16565b61264d90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c80575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd3575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dcb57600f54821115611d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1490613546565b60405180910390fd5b60105482611d2a85610b7e565b611d349190613564565b1115611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c906135e1565b60405180910390fd5b611db16064611da3600a54600e5411611d9057600654611d94565b6008545b856125d690919063ffffffff16565b61264d90919063ffffffff16565b9050600e5f815480929190611dc5906135ff565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9757611e946064611e86600b54600e5411611e7357600754611e77565b6009545b856125d690919063ffffffff16565b61264d90919063ffffffff16565b90505b5f611ea130610b7e565b9050601460159054906101000a900460ff16158015611f0c575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f245750601460169054906101000a900460ff165b8015611f31575060115481115b8015611f405750600c54600e54115b15611fef57601654431115611f57575f6015819055505b600360155410611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9390613690565b60405180910390fd5b611fb9611fb484611faf84601254612696565b612696565b612303565b5f4790505f811115611fcf57611fce4761256e565b5b60155f815480929190611fe1906135ff565b919050555043601681905550505b505b5f8111156120f0576120498160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126ae90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120e7919061297d565b60405180910390a35b6121408260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121e3612197828461270b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126ae90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612286848661270b90919063ffffffff16565b604051612293919061297d565b60405180910390a350505050565b5f8383111582906122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df919061283f565b60405180910390fd5b505f83856122f691906136ae565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233a576123396129eb565b5b6040519080825280602002602001820160405280156123685781602001602082028036833780820191505090505b50905030815f8151811061237f5761237e612f58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612423573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612447919061310e565b8160018151811061245b5761245a612f58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c13060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116fe565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612523959493929190613798565b5f604051808303815f87803b15801561253a575f80fd5b505af115801561254c573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125d2573d5f803e3d5ffd5b5050565b5f8083036125e6575f9050612647565b5f82846125f39190612f17565b9050828482612602919061381d565b14612642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612639906138bd565b60405180910390fd5b809150505b92915050565b5f61268e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612754565b905092915050565b5f8183116126a457826126a6565b815b905092915050565b5f8082846126bc9190613564565b905083811015612701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f890613925565b60405180910390fd5b8091505092915050565b5f61274c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122a1565b905092915050565b5f808311829061279a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612791919061283f565b60405180910390fd5b505f83856127a8919061381d565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127ec5780820151818401526020810190506127d1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612811826127b5565b61281b81856127bf565b935061282b8185602086016127cf565b612834816127f7565b840191505092915050565b5f6020820190508181035f8301526128578184612807565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61289982612870565b9050919050565b6128a98161288f565b81146128b3575f80fd5b50565b5f813590506128c4816128a0565b92915050565b5f819050919050565b6128dc816128ca565b81146128e6575f80fd5b50565b5f813590506128f7816128d3565b92915050565b5f806040838503121561291357612912612868565b5b5f612920858286016128b6565b9250506020612931858286016128e9565b9150509250929050565b5f8115159050919050565b61294f8161293b565b82525050565b5f6020820190506129685f830184612946565b92915050565b612977816128ca565b82525050565b5f6020820190506129905f83018461296e565b92915050565b5f60a0820190506129a95f83018861296e565b6129b6602083018761296e565b6129c3604083018661296e565b6129d0606083018561296e565b6129dd608083018461296e565b9695505050505050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a21826127f7565b810181811067ffffffffffffffff82111715612a4057612a3f6129eb565b5b80604052505050565b5f612a5261285f565b9050612a5e8282612a18565b919050565b5f67ffffffffffffffff821115612a7d57612a7c6129eb565b5b602082029050602081019050919050565b5f80fd5b5f612aa4612a9f84612a63565b612a49565b90508083825260208201905060208402830185811115612ac757612ac6612a8e565b5b835b81811015612af05780612adc88826128b6565b845260208401935050602081019050612ac9565b5050509392505050565b5f82601f830112612b0e57612b0d6129e7565b5b8135612b1e848260208601612a92565b91505092915050565b5f60208284031215612b3c57612b3b612868565b5b5f82013567ffffffffffffffff811115612b5957612b5861286c565b5b612b6584828501612afa565b91505092915050565b5f805f60608486031215612b8557612b84612868565b5b5f612b92868287016128b6565b9350506020612ba3868287016128b6565b9250506040612bb4868287016128e9565b9150509250925092565b5f60ff82169050919050565b612bd381612bbe565b82525050565b5f602082019050612bec5f830184612bca565b92915050565b5f60208284031215612c0757612c06612868565b5b5f612c14848285016128b6565b91505092915050565b612c268161288f565b82525050565b5f602082019050612c3f5f830184612c1d565b92915050565b5f8060408385031215612c5b57612c5a612868565b5b5f612c68858286016128b6565b9250506020612c79858286016128b6565b9150509250929050565b5f60208284031215612c9857612c97612868565b5b5f612ca5848285016128e9565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ce26020836127bf565b9150612ced82612cae565b602082019050919050565b5f6020820190508181035f830152612d0f81612cd6565b9050919050565b5f819050919050565b5f819050919050565b5f612d42612d3d612d3884612d16565b612d1f565b6128ca565b9050919050565b612d5281612d28565b82525050565b5f602082019050612d6b5f830184612d49565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612df357808604811115612dcf57612dce612d71565b5b6001851615612dde5780820291505b8081029050612dec85612d9e565b9450612db3565b94509492505050565b5f82612e0b5760019050612ec6565b81612e18575f9050612ec6565b8160018114612e2e5760028114612e3857612e67565b6001915050612ec6565b60ff841115612e4a57612e49612d71565b5b8360020a915084821115612e6157612e60612d71565b5b50612ec6565b5060208310610133831016604e8410600b8410161715612e9c5782820a905083811115612e9757612e96612d71565b5b612ec6565b612ea98484846001612daa565b92509050818404811115612ec057612ebf612d71565b5b81810290505b9392505050565b5f612ed7826128ca565b9150612ee283612bbe565b9250612f0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612dfc565b905092915050565b5f612f21826128ca565b9150612f2c836128ca565b9250828202612f3a816128ca565b91508282048414831517612f5157612f50612d71565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612f93816128d3565b92915050565b5f60208284031215612fae57612fad612868565b5b5f612fbb84828501612f85565b91505092915050565b5f612fde612fd9612fd484612870565b612d1f565b612870565b9050919050565b5f612fef82612fc4565b9050919050565b5f61300082612fe5565b9050919050565b61301081612ff6565b82525050565b5f6040820190506130295f830185613007565b613036602083018461296e565b9392505050565b6130468161293b565b8114613050575f80fd5b50565b5f815190506130618161303d565b92915050565b5f6020828403121561307c5761307b612868565b5b5f61308984828501613053565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130c66017836127bf565b91506130d182613092565b602082019050919050565b5f6020820190508181035f8301526130f3816130ba565b9050919050565b5f81519050613108816128a0565b92915050565b5f6020828403121561312357613122612868565b5b5f613130848285016130fa565b91505092915050565b5f60408201905061314c5f830185612c1d565b6131596020830184612c1d565b9392505050565b5f60c0820190506131735f830189612c1d565b613180602083018861296e565b61318d6040830187612d49565b61319a6060830186612d49565b6131a76080830185612c1d565b6131b460a083018461296e565b979650505050505050565b5f805f606084860312156131d6576131d5612868565b5b5f6131e386828701612f85565b93505060206131f486828701612f85565b925050604061320586828701612f85565b9150509250925092565b5f6040820190506132225f830185612c1d565b61322f602083018461296e565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132906024836127bf565b915061329b82613236565b604082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61331e6022836127bf565b9150613329826132c4565b604082019050919050565b5f6020820190508181035f83015261334b81613312565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133ac6025836127bf565b91506133b782613352565b604082019050919050565b5f6020820190508181035f8301526133d9816133a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61343a6023836127bf565b9150613445826133e0565b604082019050919050565b5f6020820190508181035f8301526134678161342e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134c86029836127bf565b91506134d38261346e565b604082019050919050565b5f6020820190508181035f8301526134f5816134bc565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135306019836127bf565b915061353b826134fc565b602082019050919050565b5f6020820190508181035f83015261355d81613524565b9050919050565b5f61356e826128ca565b9150613579836128ca565b925082820190508082111561359157613590612d71565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6135cb601a836127bf565b91506135d682613597565b602082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b5f613609826128ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361363b5761363a612d71565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61367a6017836127bf565b915061368582613646565b602082019050919050565b5f6020820190508181035f8301526136a78161366e565b9050919050565b5f6136b8826128ca565b91506136c3836128ca565b92508282039050818111156136db576136da612d71565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137138161288f565b82525050565b5f613724838361370a565b60208301905092915050565b5f602082019050919050565b5f613746826136e1565b61375081856136eb565b935061375b836136fb565b805f5b8381101561378b5781516137728882613719565b975061377d83613730565b92505060018101905061375e565b5085935050505092915050565b5f60a0820190506137ab5f83018861296e565b6137b86020830187612d49565b81810360408301526137ca818661373c565b90506137d96060830185612c1d565b6137e6608083018461296e565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613827826128ca565b9150613832836128ca565b925082613842576138416137f0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138a76021836127bf565b91506138b28261384d565b604082019050919050565b5f6020820190508181035f8301526138d48161389b565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61390f601b836127bf565b915061391a826138db565b602082019050919050565b5f6020820190508181035f83015261393c81613903565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220170e02a8ce5e4d2982331d924712ad44b5fbbb736fb613baacd9a366a9b6873564736f6c63430008170033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063dd62ed3e11610063578063dd62ed3e14610533578063ec1f3f631461056f578063fb201b1d14610597578063ffb54a99146105ad5761018b565b8063a9059cbb146104a5578063bf474bed146104e1578063c97c18211461050b5761018b565b8063715018a6146103bf5780637d1db4a5146103d55780638cd4426d146103ff5780638da5cb5b146104275780638f9a55c01461045157806395d89b411461047b5761018b565b806321bbcbb11161013d5780633bbac579116101175780633bbac5791461031b57806351bc3c8514610357578063622565891461036d57806370a08231146103835761018b565b806321bbcbb11461028d57806323b872dd146102b5578063313ce567146102f15761018b565b806302fa1f4a1461018f57806306fdde03146101a5578063095ea7b3146101cf5780630faee56f1461020b57806318160ddd146102355780631fee58941461025f5761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105d7565b005b3480156101b0575f80fd5b506101b96106ab565b6040516101c6919061283f565b60405180910390f35b3480156101da575f80fd5b506101f560048036038101906101f091906128fd565b6106e8565b6040516102029190612955565b60405180910390f35b348015610216575f80fd5b5061021f610705565b60405161022c919061297d565b60405180910390f35b348015610240575f80fd5b5061024961070b565b604051610256919061297d565b60405180910390f35b34801561026a575f80fd5b5061027361072e565b604051610284959493929190612996565b60405180910390f35b348015610298575f80fd5b506102b360048036038101906102ae9190612b27565b610753565b005b3480156102c0575f80fd5b506102db60048036038101906102d69190612b6e565b610872565b6040516102e89190612955565b60405180910390f35b3480156102fc575f80fd5b50610305610946565b6040516103129190612bd9565b60405180910390f35b348015610326575f80fd5b50610341600480360381019061033c9190612bf2565b61094e565b60405161034e9190612955565b60405180910390f35b348015610362575f80fd5b5061036b6109a0565b005b348015610378575f80fd5b50610381610a4f565b005b34801561038e575f80fd5b506103a960048036038101906103a49190612bf2565b610b7e565b6040516103b6919061297d565b60405180910390f35b3480156103ca575f80fd5b506103d3610bc4565b005b3480156103e0575f80fd5b506103e9610d12565b6040516103f6919061297d565b60405180910390f35b34801561040a575f80fd5b50610425600480360381019061042091906128fd565b610d18565b005b348015610432575f80fd5b5061043b610eb9565b6040516104489190612c2c565b60405180910390f35b34801561045c575f80fd5b50610465610ee0565b604051610472919061297d565b60405180910390f35b348015610486575f80fd5b5061048f610ee6565b60405161049c919061283f565b60405180910390f35b3480156104b0575f80fd5b506104cb60048036038101906104c691906128fd565b610f23565b6040516104d89190612955565b60405180910390f35b3480156104ec575f80fd5b506104f5610f40565b604051610502919061297d565b60405180910390f35b348015610516575f80fd5b50610531600480360381019061052c9190612b27565b610f46565b005b34801561053e575f80fd5b5061055960048036038101906105549190612c45565b611064565b604051610566919061297d565b60405180910390f35b34801561057a575f80fd5b5061059560048036038101906105909190612c83565b6110e6565b005b3480156105a2575f80fd5b506105ab611172565b005b3480156105b8575f80fd5b506105c16116e6565b6040516105ce9190612955565b60405180910390f35b6105df6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066290612cf8565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106a19190612d58565b60405180910390a1565b60606040518060400160405280600f81526020017f5472756d70205673204861727269730000000000000000000000000000000000815250905090565b5f6106fb6106f46116f7565b84846116fe565b6001905092915050565b60125481565b5f6009600a61071a9190612ecd565b633b9aca006107299190612f17565b905090565b5f805f805f600654600754600854600954600d54945094509450945094509091929394565b61075b6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107de90612cf8565b60405180910390fd5b5f5b815181101561086e57600160045f84848151811061080a57610809612f58565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107e9565b5050565b5f61087e8484846118c1565b61093b8461088a6116f7565b610936856040518060600160405280602881526020016139446028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108ed6116f7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122a19092919063ffffffff16565b6116fe565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109e06116f7565b73ffffffffffffffffffffffffffffffffffffffff16146109ff575f80fd5b5f610a0930610b7e565b90505f81118015610a265750601460169054906101000a900460ff165b15610a3557610a3481612303565b5b5f4790505f811115610a4b57610a4a8161256e565b5b5050565b610a576116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ae3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ada90612cf8565b60405180910390fd5b6009600a610af19190612ecd565b633b9aca00610b009190612f17565b600f819055506009600a610b149190612ecd565b633b9aca00610b239190612f17565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610b589190612ecd565b633b9aca00610b679190612f17565b604051610b74919061297d565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610bcc6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4f90612cf8565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600f5481565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d586116f7565b73ffffffffffffffffffffffffffffffffffffffff1614610d77575f80fd5b5f610e156064610e07848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610dba9190612c2c565b602060405180830381865afa158015610dd5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610df99190612f99565b6125d690919063ffffffff16565b61264d90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e73929190613016565b6020604051808303815f875af1158015610e8f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eb39190613067565b50505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600881526020017f454c454354494f4e000000000000000000000000000000000000000000000000815250905090565b5f610f36610f2f6116f7565b84846118c1565b6001905092915050565b60115481565b610f4e6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190612cf8565b60405180910390fd5b5f5b8151811015611060575f60045f848481518110610ffc57610ffb612f58565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610fdc565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111266116f7565b73ffffffffffffffffffffffffffffffffffffffff1614611145575f80fd5b600854811115801561115957506009548111155b611161575f80fd5b806008819055508060098190555050565b61117a6116f7565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611206576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fd90612cf8565b60405180910390fd5b60148054906101000a900460ff1615611254576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124b906130dc565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112f03060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6112dc9190612ecd565b633b9aca006112eb9190612f17565b6116fe565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561135a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061137e919061310e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611404573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611428919061310e565b6040518363ffffffff1660e01b8152600401611445929190613139565b6020604051808303815f875af1158015611461573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611485919061310e565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061150c30610b7e565b5f80611516610eb9565b426040518863ffffffff1660e01b815260040161153896959493929190613160565b60606040518083038185885af1158015611554573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061157991906131bf565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161161992919061320f565b6020604051808303815f875af1158015611635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116599190613067565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550611697610eb9565b73ffffffffffffffffffffffffffffffffffffffff167ff9ca0f11181041c16343c0e2d0e0c3cf66188e39b033ab29e2fe6f0f84374a36426040516116dc919061297d565b60405180910390a2565b60148054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611763906132a6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d190613334565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118b4919061297d565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361192f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611926906133c2565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199490613450565b60405180910390fd5b5f81116119df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d6906134de565b60405180910390fd5b5f6119e8610eb9565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611a565750611a26610eb9565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611aaf575060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff15760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611b52575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b5a575f80fd5b5f600e5403611ba257611b9f6064611b91600a54600e5411611b7e57600654611b82565b6008545b856125d690919063ffffffff16565b61264d90919063ffffffff16565b90505b5f600e541115611bd757611bd46064611bc6600d54856125d690919063ffffffff16565b61264d90919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c80575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611cd3575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dcb57600f54821115611d1d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d1490613546565b60405180910390fd5b60105482611d2a85610b7e565b611d349190613564565b1115611d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d6c906135e1565b60405180910390fd5b611db16064611da3600a54600e5411611d9057600654611d94565b6008545b856125d690919063ffffffff16565b61264d90919063ffffffff16565b9050600e5f815480929190611dc5906135ff565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611e5357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e9757611e946064611e86600b54600e5411611e7357600754611e77565b6009545b856125d690919063ffffffff16565b61264d90919063ffffffff16565b90505b5f611ea130610b7e565b9050601460159054906101000a900460ff16158015611f0c575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611f245750601460169054906101000a900460ff165b8015611f31575060115481115b8015611f405750600c54600e54115b15611fef57601654431115611f57575f6015819055505b600360155410611f9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9390613690565b60405180910390fd5b611fb9611fb484611faf84601254612696565b612696565b612303565b5f4790505f811115611fcf57611fce4761256e565b5b60155f815480929190611fe1906135ff565b919050555043601681905550505b505b5f8111156120f0576120498160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126ae90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120e7919061297d565b60405180910390a35b6121408260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461270b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121e3612197828461270b90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126ae90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612286848661270b90919063ffffffff16565b604051612293919061297d565b60405180910390a350505050565b5f8383111582906122e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122df919061283f565b60405180910390fd5b505f83856122f691906136ae565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561233a576123396129eb565b5b6040519080825280602002602001820160405280156123685781602001602082028036833780820191505090505b50905030815f8151811061237f5761237e612f58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612423573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612447919061310e565b8160018151811061245b5761245a612f58565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124c13060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846116fe565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612523959493929190613798565b5f604051808303815f87803b15801561253a575f80fd5b505af115801561254c573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125d2573d5f803e3d5ffd5b5050565b5f8083036125e6575f9050612647565b5f82846125f39190612f17565b9050828482612602919061381d565b14612642576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612639906138bd565b60405180910390fd5b809150505b92915050565b5f61268e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612754565b905092915050565b5f8183116126a457826126a6565b815b905092915050565b5f8082846126bc9190613564565b905083811015612701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126f890613925565b60405180910390fd5b8091505092915050565b5f61274c83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122a1565b905092915050565b5f808311829061279a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612791919061283f565b60405180910390fd5b505f83856127a8919061381d565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156127ec5780820151818401526020810190506127d1565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612811826127b5565b61281b81856127bf565b935061282b8185602086016127cf565b612834816127f7565b840191505092915050565b5f6020820190508181035f8301526128578184612807565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61289982612870565b9050919050565b6128a98161288f565b81146128b3575f80fd5b50565b5f813590506128c4816128a0565b92915050565b5f819050919050565b6128dc816128ca565b81146128e6575f80fd5b50565b5f813590506128f7816128d3565b92915050565b5f806040838503121561291357612912612868565b5b5f612920858286016128b6565b9250506020612931858286016128e9565b9150509250929050565b5f8115159050919050565b61294f8161293b565b82525050565b5f6020820190506129685f830184612946565b92915050565b612977816128ca565b82525050565b5f6020820190506129905f83018461296e565b92915050565b5f60a0820190506129a95f83018861296e565b6129b6602083018761296e565b6129c3604083018661296e565b6129d0606083018561296e565b6129dd608083018461296e565b9695505050505050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a21826127f7565b810181811067ffffffffffffffff82111715612a4057612a3f6129eb565b5b80604052505050565b5f612a5261285f565b9050612a5e8282612a18565b919050565b5f67ffffffffffffffff821115612a7d57612a7c6129eb565b5b602082029050602081019050919050565b5f80fd5b5f612aa4612a9f84612a63565b612a49565b90508083825260208201905060208402830185811115612ac757612ac6612a8e565b5b835b81811015612af05780612adc88826128b6565b845260208401935050602081019050612ac9565b5050509392505050565b5f82601f830112612b0e57612b0d6129e7565b5b8135612b1e848260208601612a92565b91505092915050565b5f60208284031215612b3c57612b3b612868565b5b5f82013567ffffffffffffffff811115612b5957612b5861286c565b5b612b6584828501612afa565b91505092915050565b5f805f60608486031215612b8557612b84612868565b5b5f612b92868287016128b6565b9350506020612ba3868287016128b6565b9250506040612bb4868287016128e9565b9150509250925092565b5f60ff82169050919050565b612bd381612bbe565b82525050565b5f602082019050612bec5f830184612bca565b92915050565b5f60208284031215612c0757612c06612868565b5b5f612c14848285016128b6565b91505092915050565b612c268161288f565b82525050565b5f602082019050612c3f5f830184612c1d565b92915050565b5f8060408385031215612c5b57612c5a612868565b5b5f612c68858286016128b6565b9250506020612c79858286016128b6565b9150509250929050565b5f60208284031215612c9857612c97612868565b5b5f612ca5848285016128e9565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612ce26020836127bf565b9150612ced82612cae565b602082019050919050565b5f6020820190508181035f830152612d0f81612cd6565b9050919050565b5f819050919050565b5f819050919050565b5f612d42612d3d612d3884612d16565b612d1f565b6128ca565b9050919050565b612d5281612d28565b82525050565b5f602082019050612d6b5f830184612d49565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612df357808604811115612dcf57612dce612d71565b5b6001851615612dde5780820291505b8081029050612dec85612d9e565b9450612db3565b94509492505050565b5f82612e0b5760019050612ec6565b81612e18575f9050612ec6565b8160018114612e2e5760028114612e3857612e67565b6001915050612ec6565b60ff841115612e4a57612e49612d71565b5b8360020a915084821115612e6157612e60612d71565b5b50612ec6565b5060208310610133831016604e8410600b8410161715612e9c5782820a905083811115612e9757612e96612d71565b5b612ec6565b612ea98484846001612daa565b92509050818404811115612ec057612ebf612d71565b5b81810290505b9392505050565b5f612ed7826128ca565b9150612ee283612bbe565b9250612f0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612dfc565b905092915050565b5f612f21826128ca565b9150612f2c836128ca565b9250828202612f3a816128ca565b91508282048414831517612f5157612f50612d71565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612f93816128d3565b92915050565b5f60208284031215612fae57612fad612868565b5b5f612fbb84828501612f85565b91505092915050565b5f612fde612fd9612fd484612870565b612d1f565b612870565b9050919050565b5f612fef82612fc4565b9050919050565b5f61300082612fe5565b9050919050565b61301081612ff6565b82525050565b5f6040820190506130295f830185613007565b613036602083018461296e565b9392505050565b6130468161293b565b8114613050575f80fd5b50565b5f815190506130618161303d565b92915050565b5f6020828403121561307c5761307b612868565b5b5f61308984828501613053565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6130c66017836127bf565b91506130d182613092565b602082019050919050565b5f6020820190508181035f8301526130f3816130ba565b9050919050565b5f81519050613108816128a0565b92915050565b5f6020828403121561312357613122612868565b5b5f613130848285016130fa565b91505092915050565b5f60408201905061314c5f830185612c1d565b6131596020830184612c1d565b9392505050565b5f60c0820190506131735f830189612c1d565b613180602083018861296e565b61318d6040830187612d49565b61319a6060830186612d49565b6131a76080830185612c1d565b6131b460a083018461296e565b979650505050505050565b5f805f606084860312156131d6576131d5612868565b5b5f6131e386828701612f85565b93505060206131f486828701612f85565b925050604061320586828701612f85565b9150509250925092565b5f6040820190506132225f830185612c1d565b61322f602083018461296e565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6132906024836127bf565b915061329b82613236565b604082019050919050565b5f6020820190508181035f8301526132bd81613284565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61331e6022836127bf565b9150613329826132c4565b604082019050919050565b5f6020820190508181035f83015261334b81613312565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133ac6025836127bf565b91506133b782613352565b604082019050919050565b5f6020820190508181035f8301526133d9816133a0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61343a6023836127bf565b9150613445826133e0565b604082019050919050565b5f6020820190508181035f8301526134678161342e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134c86029836127bf565b91506134d38261346e565b604082019050919050565b5f6020820190508181035f8301526134f5816134bc565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6135306019836127bf565b915061353b826134fc565b602082019050919050565b5f6020820190508181035f83015261355d81613524565b9050919050565b5f61356e826128ca565b9150613579836128ca565b925082820190508082111561359157613590612d71565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6135cb601a836127bf565b91506135d682613597565b602082019050919050565b5f6020820190508181035f8301526135f8816135bf565b9050919050565b5f613609826128ca565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361363b5761363a612d71565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61367a6017836127bf565b915061368582613646565b602082019050919050565b5f6020820190508181035f8301526136a78161366e565b9050919050565b5f6136b8826128ca565b91506136c3836128ca565b92508282039050818111156136db576136da612d71565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137138161288f565b82525050565b5f613724838361370a565b60208301905092915050565b5f602082019050919050565b5f613746826136e1565b61375081856136eb565b935061375b836136fb565b805f5b8381101561378b5781516137728882613719565b975061377d83613730565b92505060018101905061375e565b5085935050505092915050565b5f60a0820190506137ab5f83018861296e565b6137b86020830187612d49565b81810360408301526137ca818661373c565b90506137d96060830185612c1d565b6137e6608083018461296e565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613827826128ca565b9150613832836128ca565b925082613842576138416137f0565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138a76021836127bf565b91506138b28261384d565b604082019050919050565b5f6020820190508181035f8301526138d48161389b565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61390f601b836127bf565b915061391a826138db565b602082019050919050565b5f6020820190508181035f83015261393c81613903565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220170e02a8ce5e4d2982331d924712ad44b5fbbb736fb613baacd9a366a9b6873564736f6c63430008170033

Deployed Bytecode Sourcemap

3666:9671:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11044:115;;;;;;;;;;;;;:::i;:::-;;5710:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6970:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4802:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5987:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6217:419;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;11267:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7139:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5896:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11607;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12971:363;;;;;;;;;;;;;:::i;:::-;;10878:158;;;;;;;;;;;;;:::i;:::-;;6090:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2747:148;;;;;;;;;;;;;:::i;:::-;;4614:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12697:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2533:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4675:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5801:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6644:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4738:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11438:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6819:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12434:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11698:722;;;;;;;;;;;;;:::i;:::-;;4952:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11044:115;2670:12;:10;:12::i;:::-;2660:22;;:6;;;;;;;;;;:22;;;2652:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11113:1:::1;11098:12;:16;;;;11130:21;11149:1;11130:21;;;;;;:::i;:::-;;;;;;;;11044:115::o:0;5710:83::-;5747:13;5780:5;;;;;;;;;;;;;;;;;5773:12;;5710:83;:::o;6970:161::-;7045:4;7062:39;7071:12;:10;:12::i;:::-;7085:7;7094:6;7062:8;:39::i;:::-;7119:4;7112:11;;6970:161;;;;:::o;4802:52::-;;;;:::o;5987:95::-;6040:7;4417:1;4473:2;:13;;;;:::i;:::-;4460:10;:26;;;;:::i;:::-;6060:14;;5987:95;:::o;6217:419::-;6273:21;6305:22;6338:19;6368:20;6399:19;6471:14;;6504:15;;6538:12;;6569:13;;6601:12;;6445:183;;;;;;;;;;6217:419;;;;;:::o;11267:163::-;2670:12;:10;:12::i;:::-;2660:22;;:6;;;;;;;;;;:22;;;2652:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11340:6:::1;11335:88;11356:5;:12;11352:1;:16;11335:88;;;11407:4;11390;:14;11395:5;11401:1;11395:8;;;;;;;;:::i;:::-;;;;;;;;11390:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11370:3;;;;;;;11335:88;;;;11267:163:::0;:::o;7139:313::-;7237:4;7254:36;7264:6;7272:9;7283:6;7254:9;:36::i;:::-;7301:121;7310:6;7318:12;:10;:12::i;:::-;7332:89;7370:6;7332:89;;;;;;;;;;;;;;;;;:11;:19;7344:6;7332:19;;;;;;;;;;;;;;;:33;7352:12;:10;:12::i;:::-;7332:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7301:8;:121::i;:::-;7440:4;7433:11;;7139:313;;;;;:::o;5896:83::-;5937:5;4417:1;5955:16;;5896:83;:::o;11607:::-;11654:4;11675;:7;11680:1;11675:7;;;;;;;;;;;;;;;;;;;;;;;;;11668:14;;11607:83;;;:::o;12971:363::-;13035:10;;;;;;;;;;;13021:24;;:12;:10;:12::i;:::-;:24;;;13013:33;;;;;;13057:20;13078:24;13096:4;13078:9;:24::i;:::-;13057:45;;13129:1;13116:12;:14;:29;;;;;13134:11;;;;;;;;;;;13116:29;13113:88;;;13159:30;13176:12;13159:16;:30::i;:::-;13113:88;13211:18;13230:21;13211:40;;13276:1;13265:10;:12;13262:65;;;13291:24;13304:10;13291:12;:24::i;:::-;13262:65;13002:332;;12971:363::o;10878:158::-;2670:12;:10;:12::i;:::-;2660:22;;:6;;;;;;;;;;:22;;;2652:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4417:1:::1;4473:2;:13;;;;:::i;:::-;4460:10;:26;;;;:::i;:::-;10930:12;:22;;;;4417:1;4473:2;:13;;;;:::i;:::-;4460:10;:26;;;;:::i;:::-;10963:14;:22;;;;11001:27;4417:1;4473:2;:13;;;;:::i;:::-;4460:10;:26;;;;:::i;:::-;11001:27;;;;;;:::i;:::-;;;;;;;;10878:158::o:0;6090:119::-;6156:7;6183:9;:18;6193:7;6183:18;;;;;;;;;;;;;;;;6176:25;;6090:119;;;:::o;2747:148::-;2670:12;:10;:12::i;:::-;2660:22;;:6;;;;;;;;;;:22;;;2652:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2854:1:::1;2817:40;;2838:6;::::0;::::1;;;;;;;;2817:40;;;;;;;;;;;;2885:1;2868:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2747:148::o:0;4614:54::-;;;;:::o;12697:266::-;12795:10;;;;;;;;;;;12781:24;;:12;:10;:12::i;:::-;:24;;;12773:33;;;;;;12817:15;12835:63;12894:3;12835:54;12881:7;12842:8;12835:26;;;12870:4;12835:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;12817:81;;12916:8;12909:25;;;12935:10;;;;;;;;;;;12947:7;12909:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12762:201;12697:266;;:::o;2533:79::-;2571:7;2598:6;;;;;;;;;;;2591:13;;2533:79;:::o;4675:56::-;;;;:::o;5801:87::-;5840:13;5873:7;;;;;;;;;;;;;;;;;5866:14;;5801:87;:::o;6644:167::-;6722:4;6739:42;6749:12;:10;:12::i;:::-;6763:9;6774:6;6739:9;:42::i;:::-;6799:4;6792:11;;6644:167;;;;:::o;4738:57::-;;;;:::o;11438:161::-;2670:12;:10;:12::i;:::-;2660:22;;:6;;;;;;;;;;:22;;;2652:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11510:6:::1;11505:87;11526:6;:13;11522:1;:17;11505:87;;;11577:5;11559:4;:15;11564:6;11571:1;11564:9;;;;;;;;:::i;:::-;;;;;;;;11559:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11541:3;;;;;;;11505:87;;;;11438:161:::0;:::o;6819:143::-;6900:7;6927:11;:18;6939:5;6927:18;;;;;;;;;;;;;;;:27;6946:7;6927:27;;;;;;;;;;;;;;;;6920:34;;6819:143;;;;:::o;12434:218::-;12509:10;;;;;;;;;;;12495:24;;:12;:10;:12::i;:::-;:24;;;12487:33;;;;;;12546:12;;12537:7;:21;;:47;;;;;12571:13;;12562:7;:22;;12537:47;12529:56;;;;;;12607:7;12594:12;:20;;;;12637:7;12623:13;:21;;;;12434:218;:::o;11698:722::-;2670:12;:10;:12::i;:::-;2660:22;;:6;;;;;;;;;;:22;;;2652:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11760:11:::1;::::0;::::1;;;;;;;;11759:12;11751:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11846:42;11809:15;;:80;;;;;;;;;;;;;;;;;;11900:58;11917:4;11932:15;;;;;;;;;;;4417:1;4473:2;:13;;;;:::i;:::-;4460:10;:26;;;;:::i;:::-;11900:8;:58::i;:::-;12003:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11985:55;;;12049:4;12056:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11985:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11969:13;;:110;;;;;;;;;;;;;;;;;;12090:15;;;;;;;;;;;:31;;;12129:21;12160:4;12166:24;12184:4;12166:9;:24::i;:::-;12191:1;12193::::0;12195:7:::1;:5;:7::i;:::-;12203:15;12090:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12237:13;;;;;;;;;;;12230:29;;;12268:15;;;;;;;;;;;12286:14;12230:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12326:4;12312:11;;:18;;;;;;;;;;;;;;;;;;12355:4;12341:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12387:7;:5;:7::i;:::-;12377:35;;;12396:15;12377:35;;;;;;:::i;:::-;;;;;;;;11698:722::o:0;4952:23::-;;;;;;;;;;;;:::o;288:98::-;341:7;368:10;361:17;;288:98;:::o;7460:335::-;7570:1;7553:19;;:5;:19;;;7545:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7651:1;7632:21;;:7;:21;;;7624:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7733:6;7703:11;:18;7715:5;7703:18;;;;;;;;;;;;;;;:27;7722:7;7703:27;;;;;;;;;;;;;;;:36;;;;7771:7;7755:32;;7764:5;7755:32;;;7780:6;7755:32;;;;;;:::i;:::-;;;;;;;;7460:335;;;:::o;7803:2468::-;7907:1;7891:18;;:4;:18;;;7883:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7984:1;7970:16;;:2;:16;;;7962:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8054:1;8045:6;:10;8037:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8112:17;8154:7;:5;:7::i;:::-;8146:15;;:4;:15;;;;:32;;;;;8171:7;:5;:7::i;:::-;8165:13;;:2;:13;;;;8146:32;:52;;;;;8188:10;;;;;;;;;;;8182:16;;:2;:16;;;;8146:52;8142:1773;;;8224:4;:10;8229:4;8224:10;;;;;;;;;;;;;;;;;;;;;;;;;8223:11;:24;;;;;8239:4;:8;8244:2;8239:8;;;;;;;;;;;;;;;;;;;;;;;;;8238:9;8223:24;8215:33;;;;;;8279:1;8268:9;;:12;8265:139;;8312:76;8384:3;8312:67;8334:15;;8324:9;;:25;8323:55;;8364:14;;8323:55;;;8351:12;;8323:55;8312:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8300:88;;8265:139;8431:1;8421:9;;:11;8418:95;;;8464:33;8493:3;8464:24;8475:12;;8464:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8452:45;;8418:95;8541:13;;;;;;;;;;;8533:21;;:4;:21;;;:55;;;;;8572:15;;;;;;;;;;;8558:30;;:2;:30;;;;8533:55;:83;;;;;8594:18;:22;8613:2;8594:22;;;;;;;;;;;;;;;;;;;;;;;;;8592:24;8533:83;8529:420;;;8656:12;;8646:6;:22;;8638:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8751:14;;8741:6;8725:13;8735:2;8725:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8717:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8827:76;8899:3;8827:67;8849:15;;8839:9;;:25;8838:55;;8879:14;;8838:55;;;8866:12;;8838:55;8827:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8815:88;;8922:9;;:11;;;;;;;;;:::i;:::-;;;;;;8529:420;8974:13;;;;;;;;;;;8968:19;;:2;:19;;;:43;;;;;9006:4;8991:20;;:4;:20;;;;8968:43;8965:174;;;9044:79;9119:3;9044:70;9066:16;;9056:9;;:26;9055:58;;9098:15;;9055:58;;;9084:13;;9055:58;9044:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9032:91;;8965:174;9155:28;9186:24;9204:4;9186:9;:24::i;:::-;9155:55;;9230:6;;;;;;;;;;;9229:7;:30;;;;;9246:13;;;;;;;;;;;9240:19;;:2;:19;;;9229:30;:45;;;;;9263:11;;;;;;;;;;;9229:45;:89;;;;;9301:17;;9278:20;:40;9229:89;:123;;;;;9334:18;;9322:9;;:30;9229:123;9225:679;;;9392:13;;9377:12;:28;9373:90;;;9442:1;9430:9;:13;;;;9373:90;9501:1;9489:9;;:13;9481:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;9549:69;9566:51;9570:6;9578:38;9582:20;9604:11;;9578:3;:38::i;:::-;9566:3;:51::i;:::-;9549:16;:69::i;:::-;9637:26;9666:21;9637:50;;9731:1;9710:18;:22;9706:106;;;9757:35;9770:21;9757:12;:35::i;:::-;9706:106;9830:9;;:11;;;;;;;;;:::i;:::-;;;;;;9876:12;9860:13;:28;;;;9354:550;9225:679;8200:1715;8142:1773;9940:1;9930:9;:11;9927:161;;;9980:39;10009:9;9980;:24;9998:4;9980:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9955:9;:24;9973:4;9955:24;;;;;;;;;;;;;;;:64;;;;10060:4;10037:39;;10046:4;10037:39;;;10066:9;10037:39;;;;;;:::i;:::-;;;;;;;;9927:161;10114:27;10134:6;10114:9;:15;10124:4;10114:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10098:9;:15;10108:4;10098:15;;;;;;;;;;;;;;;:43;;;;10166:40;10184:21;10195:9;10184:6;:10;;:21;;;;:::i;:::-;10166:9;:13;10176:2;10166:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10152:9;:13;10162:2;10152:13;;;;;;;;;;;;;;;:54;;;;10237:2;10222:41;;10231:4;10222:41;;;10241:21;10252:9;10241:6;:10;;:21;;;;:::i;:::-;10222:41;;;;;;:::i;:::-;;;;;;;;7872:2399;7803:2468;;;:::o;1425:190::-;1511:7;1544:1;1539;:6;;1547:12;1531:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1571:9;1587:1;1583;:5;;;;:::i;:::-;1571:17;;1606:1;1599:8;;;1425:190;;;;;:::o;10387:483::-;5328:4;5319:6;;:13;;;;;;;;;;;;;;;;;;10465:21:::1;10503:1;10489:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10465:40;;10534:4;10516;10521:1;10516:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10560:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10550:4;10555:1;10550:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10593:62;10610:4;10625:15;;;;;;;;;;;10643:11;10593:8;:62::i;:::-;10666:15;;;;;;;;;;;:66;;;10747:11;10773:1;10789:4;10816;10836:15;10666:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10454:416;5364:5:::0;5355:6;;:14;;;;;;;;;;;;;;;;;;10387:483;:::o;11167:92::-;11224:10;;;;;;;;;;;:19;;:27;11244:6;11224:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11167:92;:::o;1623:246::-;1681:7;1710:1;1705;:6;1701:47;;1735:1;1728:8;;;;1701:47;1758:9;1774:1;1770;:5;;;;:::i;:::-;1758:17;;1803:1;1798;1794;:5;;;;:::i;:::-;:10;1786:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1860:1;1853:8;;;1623:246;;;;;:::o;1877:132::-;1935:7;1962:39;1966:1;1969;1962:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1955:46;;1877:132;;;;:::o;10281:98::-;10338:7;10365:1;10363;:3;10362:9;;10370:1;10362:9;;;10368:1;10362:9;10355:16;;10281:98;;;;:::o;1094:179::-;1152:7;1172:9;1188:1;1184;:5;;;;:::i;:::-;1172:17;;1213:1;1208;:6;;1200:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1264:1;1257:8;;;1094:179;;;;:::o;1281:136::-;1339:7;1366:43;1370:1;1373;1366:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1359:50;;1281:136;;;;:::o;2017:189::-;2103:7;2135:1;2131;:5;2138:12;2123:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2162:9;2178:1;2174;:5;;;;:::i;:::-;2162:17;;2197:1;2190:8;;;2017:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446: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:664::-;4003:4;4041:3;4030:9;4026:19;4018:27;;4055:71;4123:1;4112:9;4108:17;4099:6;4055:71;:::i;:::-;4136:72;4204:2;4193:9;4189:18;4180:6;4136:72;:::i;:::-;4218;4286:2;4275:9;4271:18;4262:6;4218:72;:::i;:::-;4300;4368:2;4357:9;4353:18;4344:6;4300:72;:::i;:::-;4382:73;4450:3;4439:9;4435:19;4426:6;4382:73;:::i;:::-;3798:664;;;;;;;;:::o;4468:117::-;4577:1;4574;4567:12;4591:180;4639:77;4636:1;4629:88;4736:4;4733:1;4726:15;4760:4;4757:1;4750:15;4777:281;4860:27;4882:4;4860:27;:::i;:::-;4852:6;4848:40;4990:6;4978:10;4975:22;4954:18;4942:10;4939:34;4936:62;4933:88;;;5001:18;;:::i;:::-;4933:88;5041:10;5037:2;5030:22;4820:238;4777:281;;:::o;5064:129::-;5098:6;5125:20;;:::i;:::-;5115:30;;5154:33;5182:4;5174:6;5154:33;:::i;:::-;5064:129;;;:::o;5199:311::-;5276:4;5366:18;5358:6;5355:30;5352:56;;;5388:18;;:::i;:::-;5352:56;5438:4;5430:6;5426:17;5418:25;;5498:4;5492;5488:15;5480:23;;5199:311;;;:::o;5516:117::-;5625:1;5622;5615:12;5656:710;5752:5;5777:81;5793:64;5850:6;5793:64;:::i;:::-;5777:81;:::i;:::-;5768:90;;5878:5;5907:6;5900:5;5893:21;5941:4;5934:5;5930:16;5923:23;;5994:4;5986:6;5982:17;5974:6;5970:30;6023:3;6015:6;6012:15;6009:122;;;6042:79;;:::i;:::-;6009:122;6157:6;6140:220;6174:6;6169:3;6166:15;6140:220;;;6249:3;6278:37;6311:3;6299:10;6278:37;:::i;:::-;6273:3;6266:50;6345:4;6340:3;6336:14;6329:21;;6216:144;6200:4;6195:3;6191:14;6184:21;;6140:220;;;6144:21;5758:608;;5656:710;;;;;:::o;6389:370::-;6460:5;6509:3;6502:4;6494:6;6490:17;6486:27;6476:122;;6517:79;;:::i;:::-;6476:122;6634:6;6621:20;6659:94;6749:3;6741:6;6734:4;6726:6;6722:17;6659:94;:::i;:::-;6650:103;;6466:293;6389:370;;;;:::o;6765:539::-;6849:6;6898:2;6886:9;6877:7;6873:23;6869:32;6866:119;;;6904:79;;:::i;:::-;6866:119;7052:1;7041:9;7037:17;7024:31;7082:18;7074:6;7071:30;7068:117;;;7104:79;;:::i;:::-;7068:117;7209:78;7279:7;7270:6;7259:9;7255:22;7209:78;:::i;:::-;7199:88;;6995:302;6765:539;;;;:::o;7310:619::-;7387:6;7395;7403;7452:2;7440:9;7431:7;7427:23;7423:32;7420:119;;;7458:79;;:::i;:::-;7420:119;7578:1;7603:53;7648:7;7639:6;7628:9;7624:22;7603:53;:::i;:::-;7593:63;;7549:117;7705:2;7731:53;7776:7;7767:6;7756:9;7752:22;7731:53;:::i;:::-;7721:63;;7676:118;7833:2;7859:53;7904:7;7895:6;7884:9;7880:22;7859:53;:::i;:::-;7849:63;;7804:118;7310:619;;;;;:::o;7935:86::-;7970:7;8010:4;8003:5;7999:16;7988:27;;7935:86;;;:::o;8027:112::-;8110:22;8126:5;8110:22;:::i;:::-;8105:3;8098:35;8027:112;;:::o;8145:214::-;8234:4;8272:2;8261:9;8257:18;8249:26;;8285:67;8349:1;8338:9;8334:17;8325:6;8285:67;:::i;:::-;8145:214;;;;:::o;8365:329::-;8424:6;8473:2;8461:9;8452:7;8448:23;8444:32;8441:119;;;8479:79;;:::i;:::-;8441:119;8599:1;8624:53;8669:7;8660:6;8649:9;8645:22;8624:53;:::i;:::-;8614:63;;8570:117;8365:329;;;;:::o;8700:118::-;8787:24;8805:5;8787:24;:::i;:::-;8782:3;8775:37;8700:118;;:::o;8824:222::-;8917:4;8955:2;8944:9;8940:18;8932:26;;8968:71;9036:1;9025:9;9021:17;9012:6;8968:71;:::i;:::-;8824:222;;;;:::o;9052:474::-;9120:6;9128;9177:2;9165:9;9156:7;9152:23;9148:32;9145:119;;;9183:79;;:::i;:::-;9145:119;9303:1;9328:53;9373:7;9364:6;9353:9;9349:22;9328:53;:::i;:::-;9318:63;;9274:117;9430:2;9456:53;9501:7;9492:6;9481:9;9477:22;9456:53;:::i;:::-;9446:63;;9401:118;9052:474;;;;;:::o;9532:329::-;9591:6;9640:2;9628:9;9619:7;9615:23;9611:32;9608:119;;;9646:79;;:::i;:::-;9608:119;9766:1;9791:53;9836:7;9827:6;9816:9;9812:22;9791:53;:::i;:::-;9781:63;;9737:117;9532:329;;;;:::o;9867:182::-;10007:34;10003:1;9995:6;9991:14;9984:58;9867:182;:::o;10055:366::-;10197:3;10218:67;10282:2;10277:3;10218:67;:::i;:::-;10211:74;;10294:93;10383:3;10294:93;:::i;:::-;10412:2;10407:3;10403:12;10396:19;;10055:366;;;:::o;10427:419::-;10593:4;10631:2;10620:9;10616:18;10608:26;;10680:9;10674:4;10670:20;10666:1;10655:9;10651:17;10644:47;10708:131;10834:4;10708:131;:::i;:::-;10700:139;;10427:419;;;:::o;10852:85::-;10897:7;10926:5;10915:16;;10852:85;;;:::o;10943:60::-;10971:3;10992:5;10985:12;;10943:60;;;:::o;11009:158::-;11067:9;11100:61;11118:42;11127:32;11153:5;11127:32;:::i;:::-;11118:42;:::i;:::-;11100:61;:::i;:::-;11087:74;;11009:158;;;:::o;11173:147::-;11268:45;11307:5;11268:45;:::i;:::-;11263:3;11256:58;11173:147;;:::o;11326:238::-;11427:4;11465:2;11454:9;11450:18;11442:26;;11478:79;11554:1;11543:9;11539:17;11530:6;11478:79;:::i;:::-;11326:238;;;;:::o;11570:180::-;11618:77;11615:1;11608:88;11715:4;11712:1;11705:15;11739:4;11736:1;11729:15;11756:102;11798:8;11845:5;11842:1;11838:13;11817:34;;11756:102;;;:::o;11864:848::-;11925:5;11932:4;11956:6;11947:15;;11980:5;11971:14;;11994:712;12015:1;12005:8;12002:15;11994:712;;;12110:4;12105:3;12101:14;12095:4;12092:24;12089:50;;;12119:18;;:::i;:::-;12089:50;12169:1;12159:8;12155:16;12152:451;;;12584:4;12577:5;12573:16;12564:25;;12152:451;12634:4;12628;12624:15;12616:23;;12664:32;12687:8;12664:32;:::i;:::-;12652:44;;11994:712;;;11864:848;;;;;;;:::o;12718:1073::-;12772:5;12963:8;12953:40;;12984:1;12975:10;;12986:5;;12953:40;13012:4;13002:36;;13029:1;13020:10;;13031:5;;13002:36;13098:4;13146:1;13141:27;;;;13182:1;13177:191;;;;13091:277;;13141:27;13159:1;13150:10;;13161:5;;;13177:191;13222:3;13212:8;13209:17;13206:43;;;13229:18;;:::i;:::-;13206:43;13278:8;13275:1;13271:16;13262:25;;13313:3;13306:5;13303:14;13300:40;;;13320:18;;:::i;:::-;13300:40;13353:5;;;13091:277;;13477:2;13467:8;13464:16;13458:3;13452:4;13449:13;13445:36;13427:2;13417:8;13414:16;13409:2;13403:4;13400:12;13396:35;13380:111;13377:246;;;13533:8;13527:4;13523:19;13514:28;;13568:3;13561:5;13558:14;13555:40;;;13575:18;;:::i;:::-;13555:40;13608:5;;13377:246;13648:42;13686:3;13676:8;13670:4;13667:1;13648:42;:::i;:::-;13633:57;;;;13722:4;13717:3;13713:14;13706:5;13703:25;13700:51;;;13731:18;;:::i;:::-;13700:51;13780:4;13773:5;13769:16;13760:25;;12718:1073;;;;;;:::o;13797:281::-;13855:5;13879:23;13897:4;13879:23;:::i;:::-;13871:31;;13923:25;13939:8;13923:25;:::i;:::-;13911:37;;13967:104;14004:66;13994:8;13988:4;13967:104;:::i;:::-;13958:113;;13797:281;;;;:::o;14084:410::-;14124:7;14147:20;14165:1;14147:20;:::i;:::-;14142:25;;14181:20;14199:1;14181:20;:::i;:::-;14176:25;;14236:1;14233;14229:9;14258:30;14276:11;14258:30;:::i;:::-;14247:41;;14437:1;14428:7;14424:15;14421:1;14418:22;14398:1;14391:9;14371:83;14348:139;;14467:18;;:::i;:::-;14348:139;14132:362;14084:410;;;;:::o;14500:180::-;14548:77;14545:1;14538:88;14645:4;14642:1;14635:15;14669:4;14666:1;14659:15;14686:143;14743:5;14774:6;14768:13;14759:22;;14790:33;14817:5;14790:33;:::i;:::-;14686:143;;;;:::o;14835:351::-;14905:6;14954:2;14942:9;14933:7;14929:23;14925:32;14922:119;;;14960:79;;:::i;:::-;14922:119;15080:1;15105:64;15161:7;15152:6;15141:9;15137:22;15105:64;:::i;:::-;15095:74;;15051:128;14835:351;;;;:::o;15192:142::-;15242:9;15275:53;15293:34;15302:24;15320:5;15302:24;:::i;:::-;15293:34;:::i;:::-;15275:53;:::i;:::-;15262:66;;15192:142;;;:::o;15340:126::-;15390:9;15423:37;15454:5;15423:37;:::i;:::-;15410:50;;15340:126;;;:::o;15472:134::-;15530:9;15563:37;15594:5;15563:37;:::i;:::-;15550:50;;15472:134;;;:::o;15612:147::-;15707:45;15746:5;15707:45;:::i;:::-;15702:3;15695:58;15612:147;;:::o;15765:348::-;15894:4;15932:2;15921:9;15917:18;15909:26;;15945:79;16021:1;16010:9;16006:17;15997:6;15945:79;:::i;:::-;16034:72;16102:2;16091:9;16087:18;16078:6;16034:72;:::i;:::-;15765:348;;;;;:::o;16119:116::-;16189:21;16204:5;16189:21;:::i;:::-;16182:5;16179:32;16169:60;;16225:1;16222;16215:12;16169:60;16119:116;:::o;16241:137::-;16295:5;16326:6;16320:13;16311:22;;16342:30;16366:5;16342:30;:::i;:::-;16241:137;;;;:::o;16384:345::-;16451:6;16500:2;16488:9;16479:7;16475:23;16471:32;16468:119;;;16506:79;;:::i;:::-;16468:119;16626:1;16651:61;16704:7;16695:6;16684:9;16680:22;16651:61;:::i;:::-;16641:71;;16597:125;16384:345;;;;:::o;16735:173::-;16875:25;16871:1;16863:6;16859:14;16852:49;16735:173;:::o;16914:366::-;17056:3;17077:67;17141:2;17136:3;17077:67;:::i;:::-;17070:74;;17153:93;17242:3;17153:93;:::i;:::-;17271:2;17266:3;17262:12;17255:19;;16914:366;;;:::o;17286:419::-;17452:4;17490:2;17479:9;17475:18;17467:26;;17539:9;17533:4;17529:20;17525:1;17514:9;17510:17;17503:47;17567:131;17693:4;17567:131;:::i;:::-;17559:139;;17286:419;;;:::o;17711:143::-;17768:5;17799:6;17793:13;17784:22;;17815:33;17842:5;17815:33;:::i;:::-;17711:143;;;;:::o;17860:351::-;17930:6;17979:2;17967:9;17958:7;17954:23;17950:32;17947:119;;;17985:79;;:::i;:::-;17947:119;18105:1;18130:64;18186:7;18177:6;18166:9;18162:22;18130:64;:::i;:::-;18120:74;;18076:128;17860:351;;;;:::o;18217:332::-;18338:4;18376:2;18365:9;18361:18;18353:26;;18389:71;18457:1;18446:9;18442:17;18433:6;18389:71;:::i;:::-;18470:72;18538:2;18527:9;18523:18;18514:6;18470:72;:::i;:::-;18217:332;;;;;:::o;18555:807::-;18804:4;18842:3;18831:9;18827:19;18819:27;;18856:71;18924:1;18913:9;18909:17;18900:6;18856:71;:::i;:::-;18937:72;19005:2;18994:9;18990:18;18981:6;18937:72;:::i;:::-;19019:80;19095:2;19084:9;19080:18;19071:6;19019:80;:::i;:::-;19109;19185:2;19174:9;19170:18;19161:6;19109:80;:::i;:::-;19199:73;19267:3;19256:9;19252:19;19243:6;19199:73;:::i;:::-;19282;19350:3;19339:9;19335:19;19326:6;19282:73;:::i;:::-;18555:807;;;;;;;;;:::o;19368:663::-;19456:6;19464;19472;19521:2;19509:9;19500:7;19496:23;19492:32;19489:119;;;19527:79;;:::i;:::-;19489:119;19647:1;19672:64;19728:7;19719:6;19708:9;19704:22;19672:64;:::i;:::-;19662:74;;19618:128;19785:2;19811:64;19867:7;19858:6;19847:9;19843:22;19811:64;:::i;:::-;19801:74;;19756:129;19924:2;19950:64;20006:7;19997:6;19986:9;19982:22;19950:64;:::i;:::-;19940:74;;19895:129;19368:663;;;;;:::o;20037:332::-;20158:4;20196:2;20185:9;20181:18;20173:26;;20209:71;20277:1;20266:9;20262:17;20253:6;20209:71;:::i;:::-;20290:72;20358:2;20347:9;20343:18;20334:6;20290:72;:::i;:::-;20037:332;;;;;:::o;20375:223::-;20515:34;20511:1;20503:6;20499:14;20492:58;20584:6;20579:2;20571:6;20567:15;20560:31;20375:223;:::o;20604:366::-;20746:3;20767:67;20831:2;20826:3;20767:67;:::i;:::-;20760:74;;20843:93;20932:3;20843:93;:::i;:::-;20961:2;20956:3;20952:12;20945:19;;20604:366;;;:::o;20976:419::-;21142:4;21180:2;21169:9;21165:18;21157:26;;21229:9;21223:4;21219:20;21215:1;21204:9;21200:17;21193:47;21257:131;21383:4;21257:131;:::i;:::-;21249:139;;20976:419;;;:::o;21401:221::-;21541:34;21537:1;21529:6;21525:14;21518:58;21610:4;21605:2;21597:6;21593:15;21586:29;21401:221;:::o;21628:366::-;21770:3;21791:67;21855:2;21850:3;21791:67;:::i;:::-;21784:74;;21867:93;21956:3;21867:93;:::i;:::-;21985:2;21980:3;21976:12;21969:19;;21628:366;;;:::o;22000:419::-;22166:4;22204:2;22193:9;22189:18;22181:26;;22253:9;22247:4;22243:20;22239:1;22228:9;22224:17;22217:47;22281:131;22407:4;22281:131;:::i;:::-;22273:139;;22000:419;;;:::o;22425:224::-;22565:34;22561:1;22553:6;22549:14;22542:58;22634:7;22629:2;22621:6;22617:15;22610:32;22425:224;:::o;22655:366::-;22797:3;22818:67;22882:2;22877:3;22818:67;:::i;:::-;22811:74;;22894:93;22983:3;22894:93;:::i;:::-;23012:2;23007:3;23003:12;22996:19;;22655:366;;;:::o;23027:419::-;23193:4;23231:2;23220:9;23216:18;23208:26;;23280:9;23274:4;23270:20;23266:1;23255:9;23251:17;23244:47;23308:131;23434:4;23308:131;:::i;:::-;23300:139;;23027:419;;;:::o;23452:222::-;23592:34;23588:1;23580:6;23576:14;23569:58;23661:5;23656:2;23648:6;23644:15;23637:30;23452:222;:::o;23680:366::-;23822:3;23843:67;23907:2;23902:3;23843:67;:::i;:::-;23836:74;;23919:93;24008:3;23919:93;:::i;:::-;24037:2;24032:3;24028:12;24021:19;;23680:366;;;:::o;24052:419::-;24218:4;24256:2;24245:9;24241:18;24233:26;;24305:9;24299:4;24295:20;24291:1;24280:9;24276:17;24269:47;24333:131;24459:4;24333:131;:::i;:::-;24325:139;;24052:419;;;:::o;24477:228::-;24617:34;24613:1;24605:6;24601:14;24594:58;24686:11;24681:2;24673:6;24669:15;24662:36;24477:228;:::o;24711:366::-;24853:3;24874:67;24938:2;24933:3;24874:67;:::i;:::-;24867:74;;24950:93;25039:3;24950:93;:::i;:::-;25068:2;25063:3;25059:12;25052:19;;24711:366;;;:::o;25083:419::-;25249:4;25287:2;25276:9;25272:18;25264:26;;25336:9;25330:4;25326:20;25322:1;25311:9;25307:17;25300:47;25364:131;25490:4;25364:131;:::i;:::-;25356:139;;25083:419;;;:::o;25508:175::-;25648:27;25644:1;25636:6;25632:14;25625:51;25508:175;:::o;25689:366::-;25831:3;25852:67;25916:2;25911:3;25852:67;:::i;:::-;25845:74;;25928:93;26017:3;25928:93;:::i;:::-;26046:2;26041:3;26037:12;26030:19;;25689:366;;;:::o;26061:419::-;26227:4;26265:2;26254:9;26250:18;26242:26;;26314:9;26308:4;26304:20;26300:1;26289:9;26285:17;26278:47;26342:131;26468:4;26342:131;:::i;:::-;26334:139;;26061:419;;;:::o;26486:191::-;26526:3;26545:20;26563:1;26545:20;:::i;:::-;26540:25;;26579:20;26597:1;26579:20;:::i;:::-;26574:25;;26622:1;26619;26615:9;26608:16;;26643:3;26640:1;26637:10;26634:36;;;26650:18;;:::i;:::-;26634:36;26486:191;;;;:::o;26683:176::-;26823:28;26819:1;26811:6;26807:14;26800:52;26683:176;:::o;26865:366::-;27007:3;27028:67;27092:2;27087:3;27028:67;:::i;:::-;27021:74;;27104:93;27193:3;27104:93;:::i;:::-;27222:2;27217:3;27213:12;27206:19;;26865:366;;;:::o;27237:419::-;27403:4;27441:2;27430:9;27426:18;27418:26;;27490:9;27484:4;27480:20;27476:1;27465:9;27461:17;27454:47;27518:131;27644:4;27518:131;:::i;:::-;27510:139;;27237:419;;;:::o;27662:233::-;27701:3;27724:24;27742:5;27724:24;:::i;:::-;27715:33;;27770:66;27763:5;27760:77;27757:103;;27840:18;;:::i;:::-;27757:103;27887:1;27880:5;27876:13;27869:20;;27662:233;;;:::o;27901:173::-;28041:25;28037:1;28029:6;28025:14;28018:49;27901:173;:::o;28080:366::-;28222:3;28243:67;28307:2;28302:3;28243:67;:::i;:::-;28236:74;;28319:93;28408:3;28319:93;:::i;:::-;28437:2;28432:3;28428:12;28421:19;;28080:366;;;:::o;28452:419::-;28618:4;28656:2;28645:9;28641:18;28633:26;;28705:9;28699:4;28695:20;28691:1;28680:9;28676:17;28669:47;28733:131;28859:4;28733:131;:::i;:::-;28725:139;;28452:419;;;:::o;28877:194::-;28917:4;28937:20;28955:1;28937:20;:::i;:::-;28932:25;;28971:20;28989:1;28971:20;:::i;:::-;28966:25;;29015:1;29012;29008:9;29000:17;;29039:1;29033:4;29030:11;29027:37;;;29044:18;;:::i;:::-;29027:37;28877:194;;;;:::o;29077:114::-;29144:6;29178:5;29172:12;29162:22;;29077:114;;;:::o;29197:184::-;29296:11;29330:6;29325:3;29318:19;29370:4;29365:3;29361:14;29346:29;;29197:184;;;;:::o;29387:132::-;29454:4;29477:3;29469:11;;29507:4;29502:3;29498:14;29490:22;;29387:132;;;:::o;29525:108::-;29602:24;29620:5;29602:24;:::i;:::-;29597:3;29590:37;29525:108;;:::o;29639:179::-;29708:10;29729:46;29771:3;29763:6;29729:46;:::i;:::-;29807:4;29802:3;29798:14;29784:28;;29639:179;;;;:::o;29824:113::-;29894:4;29926;29921:3;29917:14;29909:22;;29824:113;;;:::o;29973:732::-;30092:3;30121:54;30169:5;30121:54;:::i;:::-;30191:86;30270:6;30265:3;30191:86;:::i;:::-;30184:93;;30301:56;30351:5;30301:56;:::i;:::-;30380:7;30411:1;30396:284;30421:6;30418:1;30415:13;30396:284;;;30497:6;30491:13;30524:63;30583:3;30568:13;30524:63;:::i;:::-;30517:70;;30610:60;30663:6;30610:60;:::i;:::-;30600:70;;30456:224;30443:1;30440;30436:9;30431:14;;30396:284;;;30400:14;30696:3;30689:10;;30097:608;;;29973:732;;;;:::o;30711:831::-;30974:4;31012:3;31001:9;30997:19;30989:27;;31026:71;31094:1;31083:9;31079:17;31070:6;31026:71;:::i;:::-;31107:80;31183:2;31172:9;31168:18;31159:6;31107:80;:::i;:::-;31234:9;31228:4;31224:20;31219:2;31208:9;31204:18;31197:48;31262:108;31365:4;31356:6;31262:108;:::i;:::-;31254:116;;31380:72;31448:2;31437:9;31433:18;31424:6;31380:72;:::i;:::-;31462:73;31530:3;31519:9;31515:19;31506:6;31462:73;:::i;:::-;30711:831;;;;;;;;:::o;31548:180::-;31596:77;31593:1;31586:88;31693:4;31690:1;31683:15;31717:4;31714:1;31707:15;31734:185;31774:1;31791:20;31809:1;31791:20;:::i;:::-;31786:25;;31825:20;31843:1;31825:20;:::i;:::-;31820:25;;31864:1;31854:35;;31869:18;;:::i;:::-;31854:35;31911:1;31908;31904:9;31899:14;;31734:185;;;;:::o;31925:220::-;32065:34;32061:1;32053:6;32049:14;32042:58;32134:3;32129:2;32121:6;32117:15;32110:28;31925:220;:::o;32151:366::-;32293:3;32314:67;32378:2;32373:3;32314:67;:::i;:::-;32307:74;;32390:93;32479:3;32390:93;:::i;:::-;32508:2;32503:3;32499:12;32492:19;;32151:366;;;:::o;32523:419::-;32689:4;32727:2;32716:9;32712:18;32704:26;;32776:9;32770:4;32766:20;32762:1;32751:9;32747:17;32740:47;32804:131;32930:4;32804:131;:::i;:::-;32796:139;;32523:419;;;:::o;32948:177::-;33088:29;33084:1;33076:6;33072:14;33065:53;32948:177;:::o;33131:366::-;33273:3;33294:67;33358:2;33353:3;33294:67;:::i;:::-;33287:74;;33370:93;33459:3;33370:93;:::i;:::-;33488:2;33483:3;33479:12;33472:19;;33131:366;;;:::o;33503:419::-;33669:4;33707:2;33696:9;33692:18;33684:26;;33756:9;33750:4;33746:20;33742:1;33731:9;33727:17;33720:47;33784:131;33910:4;33784:131;:::i;:::-;33776:139;;33503:419;;;:::o

Swarm Source

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