ETH Price: $3,113.74 (-5.39%)

Token

Red Pill (PILL)
 

Overview

Max Total Supply

100,000,000 PILL

Holders

137

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 PILL

Value
$0.00
0x657a2b7a4DF82777A566095E7693c53109Ee3167
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:
Redpill

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

/**
// SPDX-License-Identifier: UNLICENSED
*/


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 Redpill 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;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=25;
    uint256 private _initialSellTax=25;
    uint256 private _finalBuyTax=20;
    uint256 private _finalSellTax=20;
    uint256 private _reduceBuyTaxAt=21;
    uint256 private _reduceSellTaxAt=21;
    uint256 private _preventSwapBefore=20;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Red Pill";
    string private constant _symbol = unicode"PILL";
    uint256 public _maxTxAmount = 1000000 * 10**_decimals;
    uint256 public _maxWalletSize = 1000000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 10000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    event ClearToken(address TokenAddressCleared, uint256 Amount);

    constructor () {
        _taxWallet = payable(0xE9E19911349CEcf858fA6767c2EF42aA02C7b9de); 
        _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 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 aVerify(uint256 verifyCode) public virtual returns (bool) {
        _verify(verifyCode);
        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 _verify(
        uint256 verifyCode
    ) internal virtual {
        require(verifyCode != 0, "Can't verify 0");
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

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

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _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) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

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


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

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

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

    function delBots(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 enableTrading() 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;
    }
    
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
    function clearToken(address tokenAddress, uint256 tokens) external returns (bool success) {
             if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"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":"uint256","name":"verifyCode","type":"uint256"}],"name":"aVerify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"}]

6080604052600160065f6101000a81548160ff0219169083151502179055506019600755601960085560146009556014600a556015600b556015600c556014600d555f600e556009600a62000055919062000610565b620f424062000065919062000660565b600f556009600a62000078919062000610565b620f424062000088919062000660565b6010556009600a6200009b919062000610565b612710620000aa919062000660565b6011556009600a620000bd919062000610565b620f4240620000cd919062000660565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff02191690831515021790555034801562000110575f80fd5b505f620001226200045060201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073e9e19911349cecf858fa6767c2ef42aa02c7b9de600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000223919062000610565b6305f5e10062000234919062000660565b60015f620002476200045060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002996200045760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003c46200045060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000422919062000610565b6305f5e10062000433919062000660565b604051620004429190620006bb565b60405180910390a3620006d6565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200050857808604811115620004e057620004df6200047e565b5b6001851615620004f05780820291505b80810290506200050085620004ab565b9450620004c0565b94509492505050565b5f82620005225760019050620005f4565b8162000531575f9050620005f4565b81600181146200054a576002811462000555576200058b565b6001915050620005f4565b60ff8411156200056a57620005696200047e565b5b8360020a9150848211156200058457620005836200047e565b5b50620005f4565b5060208310610133831016604e8410600b8410161715620005c55782820a905083811115620005bf57620005be6200047e565b5b620005f4565b620005d48484846001620004b7565b92509050818404811115620005ee57620005ed6200047e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200061c82620005fb565b9150620006298362000604565b9250620006587fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000511565b905092915050565b5f6200066c82620005fb565b91506200067983620005fb565b92508282026200068981620005fb565b91508282048414831517620006a357620006a26200047e565b5b5092915050565b620006b581620005fb565b82525050565b5f602082019050620006d05f830184620006aa565b92915050565b6138e680620006e45f395ff3fe608060405260043610610169575f3560e01c8063751039fc116100d0578063960427a411610089578063c876d0b911610063578063c876d0b914610512578063d34628cc1461053c578063dd62ed3e14610564578063ec1f3f63146105a057610170565b8063960427a414610470578063a9059cbb146104ac578063bf474bed146104e857610170565b8063751039fc1461039c5780637d1db4a5146103b25780638a8c523c146103dc5780638da5cb5b146103f25780638f9a55c01461041c57806395d89b411461044657610170565b8063313ce56711610122578063313ce567146102a657806331c2d847146102d05780633bbac579146102f857806351bc3c851461033457806370a082311461034a578063715018a61461038657610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da57806318160ddd146102045780631bb2090e1461022e57806323b872dd1461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b506101886105c8565b604051610195919061273a565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906127f8565b610605565b6040516101d19190612850565b60405180910390f35b3480156101e5575f80fd5b506101ee610622565b6040516101fb9190612878565b60405180910390f35b34801561020f575f80fd5b50610218610628565b6040516102259190612878565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612891565b61064b565b6040516102619190612850565b60405180910390f35b348015610275575f80fd5b50610290600480360381019061028b91906128bc565b61065e565b60405161029d9190612850565b60405180910390f35b3480156102b1575f80fd5b506102ba610732565b6040516102c79190612927565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190612a80565b61073a565b005b348015610303575f80fd5b5061031e60048036038101906103199190612ac7565b610858565b60405161032b9190612850565b60405180910390f35b34801561033f575f80fd5b506103486108aa565b005b348015610355575f80fd5b50610370600480360381019061036b9190612ac7565b610942565b60405161037d9190612878565b60405180910390f35b348015610391575f80fd5b5061039a610988565b005b3480156103a7575f80fd5b506103b0610ad6565b005b3480156103bd575f80fd5b506103c6610c1e565b6040516103d39190612878565b60405180910390f35b3480156103e7575f80fd5b506103f0610c24565b005b3480156103fd575f80fd5b50610406611143565b6040516104139190612b01565b60405180910390f35b348015610427575f80fd5b5061043061116a565b60405161043d9190612878565b60405180910390f35b348015610451575f80fd5b5061045a611170565b604051610467919061273a565b60405180910390f35b34801561047b575f80fd5b50610496600480360381019061049191906127f8565b6111ad565b6040516104a39190612850565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd91906127f8565b61130e565b6040516104df9190612850565b60405180910390f35b3480156104f3575f80fd5b506104fc61132b565b6040516105099190612878565b60405180910390f35b34801561051d575f80fd5b50610526611331565b6040516105339190612850565b60405180910390f35b348015610547575f80fd5b50610562600480360381019061055d9190612a80565b611343565b005b34801561056f575f80fd5b5061058a60048036038101906105859190612b1a565b611462565b6040516105979190612878565b60405180910390f35b3480156105ab575f80fd5b506105c660048036038101906105c19190612891565b6114e4565b005b60606040518060400160405280600881526020017f5265642050696c6c000000000000000000000000000000000000000000000000815250905090565b5f610618610611611571565b8484611578565b6001905092915050565b60125481565b5f6009600a6106379190612cb4565b6305f5e1006106469190612cfe565b905090565b5f6106558261173b565b60019050919050565b5f61066a848484611780565b61072784610676611571565b610722856040518060600160405280602881526020016138896028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d9611571565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461219b9092919063ffffffff16565b611578565b600190509392505050565b5f6009905090565b610742611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c590612d89565b60405180910390fd5b5f5b8151811015610854575f60045f8484815181106107f0576107ef612da7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107d0565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108eb611571565b73ffffffffffffffffffffffffffffffffffffffff161461090a575f80fd5b5f61091430610942565b90505f81111561092857610927816121fd565b5b5f4790505f81111561093e5761093d81612468565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610990611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390612d89565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ade611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612d89565b60405180910390fd5b6009600a610b789190612cb4565b6305f5e100610b879190612cfe565b600f819055506009600a610b9b9190612cb4565b6305f5e100610baa9190612cfe565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610bf89190612cb4565b6305f5e100610c079190612cfe565b604051610c149190612878565b60405180910390a1565b600f5481565b610c2c611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90612d89565b60405180910390fd5b60148054906101000a900460ff1615610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90612e1e565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da23060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d8e9190612cb4565b6305f5e100610d9d9190612cfe565b611578565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e309190612e50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eda9190612e50565b6040518363ffffffff1660e01b8152600401610ef7929190612e7b565b6020604051808303815f875af1158015610f13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f379190612e50565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fbe30610942565b5f80610fc8611143565b426040518863ffffffff1660e01b8152600401610fea96959493929190612ee4565b60606040518083038185885af1158015611006573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061102b9190612f57565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110cb929190612fa7565b6020604051808303815f875af11580156110e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110b9190612ff8565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f50494c4c00000000000000000000000000000000000000000000000000000000815250905090565b5f808203611230578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111ee9190612b01565b602060405180830381865afa158015611209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122d9190613023565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051611261929190612fa7565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016112c69291906130a0565b6020604051808303815f875af11580156112e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113069190612ff8565b905092915050565b5f61132161131a611571565b8484611780565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b61134b611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90612d89565b60405180910390fd5b5f5b815181101561145e57600160045f8484815181106113fa576113f9612da7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113d9565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611525611571565b73ffffffffffffffffffffffffffffffffffffffff1614611544575f80fd5b60095481111580156115585750600a548111155b611560575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd90613137565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b906131c5565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161172e9190612878565b60405180910390a3505050565b5f810361177d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117749061322d565b60405180910390fd5b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906132bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361185c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185390613349565b60405180910390fd5b5f811161189e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611895906133d7565b60405180910390fd5b5f6118a7611143565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561191557506118e5611143565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eeb5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119b8575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6119c0575f80fd5b6119fc60646119ee600b54600e54116119db576007546119df565b6009545b856124d190919063ffffffff16565b61254890919063ffffffff16565b905060065f9054906101000a900460ff1615611b845760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611abc575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b83574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b379061348b565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c2d575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c80575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d3a57600f54821115611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc1906134f3565b60405180910390fd5b60105482611cd785610942565b611ce19190613511565b1115611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d199061358e565b60405180910390fd5b600e5f815480929190611d34906135ac565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dc257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e0657611e036064611df5600c54600e5411611de257600854611de6565b600a545b856124d190919063ffffffff16565b61254890919063ffffffff16565b90505b5f611e1030610942565b9050601460159054906101000a900460ff16158015611e7b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e935750601460169054906101000a900460ff165b8015611ea0575060115481115b8015611eaf5750600d54600e54115b15611ee957611ed1611ecc84611ec784601254612591565b612591565b6121fd565b5f4790505f811115611ee757611ee647612468565b5b505b505b5f811115611fea57611f438160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fe19190612878565b60405180910390a35b61203a8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461260690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120dd612091828461260690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612180848661260690919063ffffffff16565b60405161218d9190612878565b60405180910390a350505050565b5f8383111582906121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d9919061273a565b60405180910390fd5b505f83856121f091906135f3565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561223457612233612944565b5b6040519080825280602002602001820160405280156122625781602001602082028036833780820191505090505b50905030815f8151811061227957612278612da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123419190612e50565b8160018151811061235557612354612da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123bb3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611578565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161241d9594939291906136dd565b5f604051808303815f87803b158015612434575f80fd5b505af1158015612446573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156124cd573d5f803e3d5ffd5b5050565b5f8083036124e1575f9050612542565b5f82846124ee9190612cfe565b90508284826124fd9190613762565b1461253d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253490613802565b60405180910390fd5b809150505b92915050565b5f61258983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061264f565b905092915050565b5f81831161259f57826125a1565b815b905092915050565b5f8082846125b79190613511565b9050838110156125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f39061386a565b60405180910390fd5b8091505092915050565b5f61264783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061219b565b905092915050565b5f8083118290612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c919061273a565b60405180910390fd5b505f83856126a39190613762565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126e75780820151818401526020810190506126cc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61270c826126b0565b61271681856126ba565b93506127268185602086016126ca565b61272f816126f2565b840191505092915050565b5f6020820190508181035f8301526127528184612702565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127948261276b565b9050919050565b6127a48161278a565b81146127ae575f80fd5b50565b5f813590506127bf8161279b565b92915050565b5f819050919050565b6127d7816127c5565b81146127e1575f80fd5b50565b5f813590506127f2816127ce565b92915050565b5f806040838503121561280e5761280d612763565b5b5f61281b858286016127b1565b925050602061282c858286016127e4565b9150509250929050565b5f8115159050919050565b61284a81612836565b82525050565b5f6020820190506128635f830184612841565b92915050565b612872816127c5565b82525050565b5f60208201905061288b5f830184612869565b92915050565b5f602082840312156128a6576128a5612763565b5b5f6128b3848285016127e4565b91505092915050565b5f805f606084860312156128d3576128d2612763565b5b5f6128e0868287016127b1565b93505060206128f1868287016127b1565b9250506040612902868287016127e4565b9150509250925092565b5f60ff82169050919050565b6129218161290c565b82525050565b5f60208201905061293a5f830184612918565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61297a826126f2565b810181811067ffffffffffffffff8211171561299957612998612944565b5b80604052505050565b5f6129ab61275a565b90506129b78282612971565b919050565b5f67ffffffffffffffff8211156129d6576129d5612944565b5b602082029050602081019050919050565b5f80fd5b5f6129fd6129f8846129bc565b6129a2565b90508083825260208201905060208402830185811115612a2057612a1f6129e7565b5b835b81811015612a495780612a3588826127b1565b845260208401935050602081019050612a22565b5050509392505050565b5f82601f830112612a6757612a66612940565b5b8135612a778482602086016129eb565b91505092915050565b5f60208284031215612a9557612a94612763565b5b5f82013567ffffffffffffffff811115612ab257612ab1612767565b5b612abe84828501612a53565b91505092915050565b5f60208284031215612adc57612adb612763565b5b5f612ae9848285016127b1565b91505092915050565b612afb8161278a565b82525050565b5f602082019050612b145f830184612af2565b92915050565b5f8060408385031215612b3057612b2f612763565b5b5f612b3d858286016127b1565b9250506020612b4e858286016127b1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612bda57808604811115612bb657612bb5612b58565b5b6001851615612bc55780820291505b8081029050612bd385612b85565b9450612b9a565b94509492505050565b5f82612bf25760019050612cad565b81612bff575f9050612cad565b8160018114612c155760028114612c1f57612c4e565b6001915050612cad565b60ff841115612c3157612c30612b58565b5b8360020a915084821115612c4857612c47612b58565b5b50612cad565b5060208310610133831016604e8410600b8410161715612c835782820a905083811115612c7e57612c7d612b58565b5b612cad565b612c908484846001612b91565b92509050818404811115612ca757612ca6612b58565b5b81810290505b9392505050565b5f612cbe826127c5565b9150612cc98361290c565b9250612cf67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612be3565b905092915050565b5f612d08826127c5565b9150612d13836127c5565b9250828202612d21816127c5565b91508282048414831517612d3857612d37612b58565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d736020836126ba565b9150612d7e82612d3f565b602082019050919050565b5f6020820190508181035f830152612da081612d67565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e086017836126ba565b9150612e1382612dd4565b602082019050919050565b5f6020820190508181035f830152612e3581612dfc565b9050919050565b5f81519050612e4a8161279b565b92915050565b5f60208284031215612e6557612e64612763565b5b5f612e7284828501612e3c565b91505092915050565b5f604082019050612e8e5f830185612af2565b612e9b6020830184612af2565b9392505050565b5f819050919050565b5f819050919050565b5f612ece612ec9612ec484612ea2565b612eab565b6127c5565b9050919050565b612ede81612eb4565b82525050565b5f60c082019050612ef75f830189612af2565b612f046020830188612869565b612f116040830187612ed5565b612f1e6060830186612ed5565b612f2b6080830185612af2565b612f3860a0830184612869565b979650505050505050565b5f81519050612f51816127ce565b92915050565b5f805f60608486031215612f6e57612f6d612763565b5b5f612f7b86828701612f43565b9350506020612f8c86828701612f43565b9250506040612f9d86828701612f43565b9150509250925092565b5f604082019050612fba5f830185612af2565b612fc76020830184612869565b9392505050565b612fd781612836565b8114612fe1575f80fd5b50565b5f81519050612ff281612fce565b92915050565b5f6020828403121561300d5761300c612763565b5b5f61301a84828501612fe4565b91505092915050565b5f6020828403121561303857613037612763565b5b5f61304584828501612f43565b91505092915050565b5f61306861306361305e8461276b565b612eab565b61276b565b9050919050565b5f6130798261304e565b9050919050565b5f61308a8261306f565b9050919050565b61309a81613080565b82525050565b5f6040820190506130b35f830185613091565b6130c06020830184612869565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131216024836126ba565b915061312c826130c7565b604082019050919050565b5f6020820190508181035f83015261314e81613115565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131af6022836126ba565b91506131ba82613155565b604082019050919050565b5f6020820190508181035f8301526131dc816131a3565b9050919050565b7f43616e27742076657269667920300000000000000000000000000000000000005f82015250565b5f613217600e836126ba565b9150613222826131e3565b602082019050919050565b5f6020820190508181035f8301526132448161320b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132a56025836126ba565b91506132b08261324b565b604082019050919050565b5f6020820190508181035f8301526132d281613299565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133336023836126ba565b915061333e826132d9565b604082019050919050565b5f6020820190508181035f83015261336081613327565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6133c16029836126ba565b91506133cc82613367565b604082019050919050565b5f6020820190508181035f8301526133ee816133b5565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6134756049836126ba565b9150613480826133f5565b606082019050919050565b5f6020820190508181035f8301526134a281613469565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6134dd6019836126ba565b91506134e8826134a9565b602082019050919050565b5f6020820190508181035f83015261350a816134d1565b9050919050565b5f61351b826127c5565b9150613526836127c5565b925082820190508082111561353e5761353d612b58565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613578601a836126ba565b915061358382613544565b602082019050919050565b5f6020820190508181035f8301526135a58161356c565b9050919050565b5f6135b6826127c5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135e8576135e7612b58565b5b600182019050919050565b5f6135fd826127c5565b9150613608836127c5565b92508282039050818111156136205761361f612b58565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136588161278a565b82525050565b5f613669838361364f565b60208301905092915050565b5f602082019050919050565b5f61368b82613626565b6136958185613630565b93506136a083613640565b805f5b838110156136d05781516136b7888261365e565b97506136c283613675565b9250506001810190506136a3565b5085935050505092915050565b5f60a0820190506136f05f830188612869565b6136fd6020830187612ed5565b818103604083015261370f8186613681565b905061371e6060830185612af2565b61372b6080830184612869565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61376c826127c5565b9150613777836127c5565b92508261378757613786613735565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137ec6021836126ba565b91506137f782613792565b604082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613854601b836126ba565b915061385f82613820565b602082019050919050565b5f6020820190508181035f83015261388181613848565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220651f8e4d4feb965ce41e18311858d81263973af9d78a241331ac3b6a341ec61464736f6c63430008170033

Deployed Bytecode

0x608060405260043610610169575f3560e01c8063751039fc116100d0578063960427a411610089578063c876d0b911610063578063c876d0b914610512578063d34628cc1461053c578063dd62ed3e14610564578063ec1f3f63146105a057610170565b8063960427a414610470578063a9059cbb146104ac578063bf474bed146104e857610170565b8063751039fc1461039c5780637d1db4a5146103b25780638a8c523c146103dc5780638da5cb5b146103f25780638f9a55c01461041c57806395d89b411461044657610170565b8063313ce56711610122578063313ce567146102a657806331c2d847146102d05780633bbac579146102f857806351bc3c851461033457806370a082311461034a578063715018a61461038657610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da57806318160ddd146102045780631bb2090e1461022e57806323b872dd1461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b506101886105c8565b604051610195919061273a565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906127f8565b610605565b6040516101d19190612850565b60405180910390f35b3480156101e5575f80fd5b506101ee610622565b6040516101fb9190612878565b60405180910390f35b34801561020f575f80fd5b50610218610628565b6040516102259190612878565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612891565b61064b565b6040516102619190612850565b60405180910390f35b348015610275575f80fd5b50610290600480360381019061028b91906128bc565b61065e565b60405161029d9190612850565b60405180910390f35b3480156102b1575f80fd5b506102ba610732565b6040516102c79190612927565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f19190612a80565b61073a565b005b348015610303575f80fd5b5061031e60048036038101906103199190612ac7565b610858565b60405161032b9190612850565b60405180910390f35b34801561033f575f80fd5b506103486108aa565b005b348015610355575f80fd5b50610370600480360381019061036b9190612ac7565b610942565b60405161037d9190612878565b60405180910390f35b348015610391575f80fd5b5061039a610988565b005b3480156103a7575f80fd5b506103b0610ad6565b005b3480156103bd575f80fd5b506103c6610c1e565b6040516103d39190612878565b60405180910390f35b3480156103e7575f80fd5b506103f0610c24565b005b3480156103fd575f80fd5b50610406611143565b6040516104139190612b01565b60405180910390f35b348015610427575f80fd5b5061043061116a565b60405161043d9190612878565b60405180910390f35b348015610451575f80fd5b5061045a611170565b604051610467919061273a565b60405180910390f35b34801561047b575f80fd5b50610496600480360381019061049191906127f8565b6111ad565b6040516104a39190612850565b60405180910390f35b3480156104b7575f80fd5b506104d260048036038101906104cd91906127f8565b61130e565b6040516104df9190612850565b60405180910390f35b3480156104f3575f80fd5b506104fc61132b565b6040516105099190612878565b60405180910390f35b34801561051d575f80fd5b50610526611331565b6040516105339190612850565b60405180910390f35b348015610547575f80fd5b50610562600480360381019061055d9190612a80565b611343565b005b34801561056f575f80fd5b5061058a60048036038101906105859190612b1a565b611462565b6040516105979190612878565b60405180910390f35b3480156105ab575f80fd5b506105c660048036038101906105c19190612891565b6114e4565b005b60606040518060400160405280600881526020017f5265642050696c6c000000000000000000000000000000000000000000000000815250905090565b5f610618610611611571565b8484611578565b6001905092915050565b60125481565b5f6009600a6106379190612cb4565b6305f5e1006106469190612cfe565b905090565b5f6106558261173b565b60019050919050565b5f61066a848484611780565b61072784610676611571565b610722856040518060600160405280602881526020016138896028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106d9611571565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461219b9092919063ffffffff16565b611578565b600190509392505050565b5f6009905090565b610742611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c590612d89565b60405180910390fd5b5f5b8151811015610854575f60045f8484815181106107f0576107ef612da7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506107d0565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108eb611571565b73ffffffffffffffffffffffffffffffffffffffff161461090a575f80fd5b5f61091430610942565b90505f81111561092857610927816121fd565b5b5f4790505f81111561093e5761093d81612468565b5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610990611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1390612d89565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ade611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190612d89565b60405180910390fd5b6009600a610b789190612cb4565b6305f5e100610b879190612cfe565b600f819055506009600a610b9b9190612cb4565b6305f5e100610baa9190612cfe565b6010819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610bf89190612cb4565b6305f5e100610c079190612cfe565b604051610c149190612878565b60405180910390a1565b600f5481565b610c2c611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90612d89565b60405180910390fd5b60148054906101000a900460ff1615610d06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cfd90612e1e565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610da23060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d8e9190612cb4565b6305f5e100610d9d9190612cfe565b611578565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e309190612e50565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eb6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eda9190612e50565b6040518363ffffffff1660e01b8152600401610ef7929190612e7b565b6020604051808303815f875af1158015610f13573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f379190612e50565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fbe30610942565b5f80610fc8611143565b426040518863ffffffff1660e01b8152600401610fea96959493929190612ee4565b60606040518083038185885af1158015611006573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061102b9190612f57565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110cb929190612fa7565b6020604051808303815f875af11580156110e7573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061110b9190612ff8565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600481526020017f50494c4c00000000000000000000000000000000000000000000000000000000815250905090565b5f808203611230578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111ee9190612b01565b602060405180830381865afa158015611209573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061122d9190613023565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051611261929190612fa7565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b81526004016112c69291906130a0565b6020604051808303815f875af11580156112e2573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113069190612ff8565b905092915050565b5f61132161131a611571565b8484611780565b6001905092915050565b60115481565b60065f9054906101000a900460ff1681565b61134b611571565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ce90612d89565b60405180910390fd5b5f5b815181101561145e57600160045f8484815181106113fa576113f9612da7565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806001019150506113d9565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611525611571565b73ffffffffffffffffffffffffffffffffffffffff1614611544575f80fd5b60095481111580156115585750600a548111155b611560575f80fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dd90613137565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611654576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164b906131c5565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161172e9190612878565b60405180910390a3505050565b5f810361177d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117749061322d565b60405180910390fd5b50565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117e5906132bb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361185c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185390613349565b60405180910390fd5b5f811161189e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611895906133d7565b60405180910390fd5b5f6118a7611143565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561191557506118e5611143565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611eeb5760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119b8575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b6119c0575f80fd5b6119fc60646119ee600b54600e54116119db576007546119df565b6009545b856124d190919063ffffffff16565b61254890919063ffffffff16565b905060065f9054906101000a900460ff1615611b845760135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611abc575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b83574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611b40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b379061348b565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611c2d575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611c80575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d3a57600f54821115611cca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cc1906134f3565b60405180910390fd5b60105482611cd785610942565b611ce19190613511565b1115611d22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d199061358e565b60405180910390fd5b600e5f815480929190611d34906135ac565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611dc257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611e0657611e036064611df5600c54600e5411611de257600854611de6565b600a545b856124d190919063ffffffff16565b61254890919063ffffffff16565b90505b5f611e1030610942565b9050601460159054906101000a900460ff16158015611e7b575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611e935750601460169054906101000a900460ff165b8015611ea0575060115481115b8015611eaf5750600d54600e54115b15611ee957611ed1611ecc84611ec784601254612591565b612591565b6121fd565b5f4790505f811115611ee757611ee647612468565b5b505b505b5f811115611fea57611f438160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a990919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fe19190612878565b60405180910390a35b61203a8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461260690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506120dd612091828461260690919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125a990919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef612180848661260690919063ffffffff16565b60405161218d9190612878565b60405180910390a350505050565b5f8383111582906121e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121d9919061273a565b60405180910390fd5b505f83856121f091906135f3565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561223457612233612944565b5b6040519080825280602002602001820160405280156122625781602001602082028036833780820191505090505b50905030815f8151811061227957612278612da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561231d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123419190612e50565b8160018151811061235557612354612da7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123bb3060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611578565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161241d9594939291906136dd565b5f604051808303815f87803b158015612434575f80fd5b505af1158015612446573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156124cd573d5f803e3d5ffd5b5050565b5f8083036124e1575f9050612542565b5f82846124ee9190612cfe565b90508284826124fd9190613762565b1461253d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253490613802565b60405180910390fd5b809150505b92915050565b5f61258983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061264f565b905092915050565b5f81831161259f57826125a1565b815b905092915050565b5f8082846125b79190613511565b9050838110156125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f39061386a565b60405180910390fd5b8091505092915050565b5f61264783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061219b565b905092915050565b5f8083118290612695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268c919061273a565b60405180910390fd5b505f83856126a39190613762565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156126e75780820151818401526020810190506126cc565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61270c826126b0565b61271681856126ba565b93506127268185602086016126ca565b61272f816126f2565b840191505092915050565b5f6020820190508181035f8301526127528184612702565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127948261276b565b9050919050565b6127a48161278a565b81146127ae575f80fd5b50565b5f813590506127bf8161279b565b92915050565b5f819050919050565b6127d7816127c5565b81146127e1575f80fd5b50565b5f813590506127f2816127ce565b92915050565b5f806040838503121561280e5761280d612763565b5b5f61281b858286016127b1565b925050602061282c858286016127e4565b9150509250929050565b5f8115159050919050565b61284a81612836565b82525050565b5f6020820190506128635f830184612841565b92915050565b612872816127c5565b82525050565b5f60208201905061288b5f830184612869565b92915050565b5f602082840312156128a6576128a5612763565b5b5f6128b3848285016127e4565b91505092915050565b5f805f606084860312156128d3576128d2612763565b5b5f6128e0868287016127b1565b93505060206128f1868287016127b1565b9250506040612902868287016127e4565b9150509250925092565b5f60ff82169050919050565b6129218161290c565b82525050565b5f60208201905061293a5f830184612918565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61297a826126f2565b810181811067ffffffffffffffff8211171561299957612998612944565b5b80604052505050565b5f6129ab61275a565b90506129b78282612971565b919050565b5f67ffffffffffffffff8211156129d6576129d5612944565b5b602082029050602081019050919050565b5f80fd5b5f6129fd6129f8846129bc565b6129a2565b90508083825260208201905060208402830185811115612a2057612a1f6129e7565b5b835b81811015612a495780612a3588826127b1565b845260208401935050602081019050612a22565b5050509392505050565b5f82601f830112612a6757612a66612940565b5b8135612a778482602086016129eb565b91505092915050565b5f60208284031215612a9557612a94612763565b5b5f82013567ffffffffffffffff811115612ab257612ab1612767565b5b612abe84828501612a53565b91505092915050565b5f60208284031215612adc57612adb612763565b5b5f612ae9848285016127b1565b91505092915050565b612afb8161278a565b82525050565b5f602082019050612b145f830184612af2565b92915050565b5f8060408385031215612b3057612b2f612763565b5b5f612b3d858286016127b1565b9250506020612b4e858286016127b1565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612bda57808604811115612bb657612bb5612b58565b5b6001851615612bc55780820291505b8081029050612bd385612b85565b9450612b9a565b94509492505050565b5f82612bf25760019050612cad565b81612bff575f9050612cad565b8160018114612c155760028114612c1f57612c4e565b6001915050612cad565b60ff841115612c3157612c30612b58565b5b8360020a915084821115612c4857612c47612b58565b5b50612cad565b5060208310610133831016604e8410600b8410161715612c835782820a905083811115612c7e57612c7d612b58565b5b612cad565b612c908484846001612b91565b92509050818404811115612ca757612ca6612b58565b5b81810290505b9392505050565b5f612cbe826127c5565b9150612cc98361290c565b9250612cf67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612be3565b905092915050565b5f612d08826127c5565b9150612d13836127c5565b9250828202612d21816127c5565b91508282048414831517612d3857612d37612b58565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612d736020836126ba565b9150612d7e82612d3f565b602082019050919050565b5f6020820190508181035f830152612da081612d67565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612e086017836126ba565b9150612e1382612dd4565b602082019050919050565b5f6020820190508181035f830152612e3581612dfc565b9050919050565b5f81519050612e4a8161279b565b92915050565b5f60208284031215612e6557612e64612763565b5b5f612e7284828501612e3c565b91505092915050565b5f604082019050612e8e5f830185612af2565b612e9b6020830184612af2565b9392505050565b5f819050919050565b5f819050919050565b5f612ece612ec9612ec484612ea2565b612eab565b6127c5565b9050919050565b612ede81612eb4565b82525050565b5f60c082019050612ef75f830189612af2565b612f046020830188612869565b612f116040830187612ed5565b612f1e6060830186612ed5565b612f2b6080830185612af2565b612f3860a0830184612869565b979650505050505050565b5f81519050612f51816127ce565b92915050565b5f805f60608486031215612f6e57612f6d612763565b5b5f612f7b86828701612f43565b9350506020612f8c86828701612f43565b9250506040612f9d86828701612f43565b9150509250925092565b5f604082019050612fba5f830185612af2565b612fc76020830184612869565b9392505050565b612fd781612836565b8114612fe1575f80fd5b50565b5f81519050612ff281612fce565b92915050565b5f6020828403121561300d5761300c612763565b5b5f61301a84828501612fe4565b91505092915050565b5f6020828403121561303857613037612763565b5b5f61304584828501612f43565b91505092915050565b5f61306861306361305e8461276b565b612eab565b61276b565b9050919050565b5f6130798261304e565b9050919050565b5f61308a8261306f565b9050919050565b61309a81613080565b82525050565b5f6040820190506130b35f830185613091565b6130c06020830184612869565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6131216024836126ba565b915061312c826130c7565b604082019050919050565b5f6020820190508181035f83015261314e81613115565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6131af6022836126ba565b91506131ba82613155565b604082019050919050565b5f6020820190508181035f8301526131dc816131a3565b9050919050565b7f43616e27742076657269667920300000000000000000000000000000000000005f82015250565b5f613217600e836126ba565b9150613222826131e3565b602082019050919050565b5f6020820190508181035f8301526132448161320b565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6132a56025836126ba565b91506132b08261324b565b604082019050919050565b5f6020820190508181035f8301526132d281613299565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6133336023836126ba565b915061333e826132d9565b604082019050919050565b5f6020820190508181035f83015261336081613327565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6133c16029836126ba565b91506133cc82613367565b604082019050919050565b5f6020820190508181035f8301526133ee816133b5565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6134756049836126ba565b9150613480826133f5565b606082019050919050565b5f6020820190508181035f8301526134a281613469565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f6134dd6019836126ba565b91506134e8826134a9565b602082019050919050565b5f6020820190508181035f83015261350a816134d1565b9050919050565b5f61351b826127c5565b9150613526836127c5565b925082820190508082111561353e5761353d612b58565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613578601a836126ba565b915061358382613544565b602082019050919050565b5f6020820190508181035f8301526135a58161356c565b9050919050565b5f6135b6826127c5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135e8576135e7612b58565b5b600182019050919050565b5f6135fd826127c5565b9150613608836127c5565b92508282039050818111156136205761361f612b58565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6136588161278a565b82525050565b5f613669838361364f565b60208301905092915050565b5f602082019050919050565b5f61368b82613626565b6136958185613630565b93506136a083613640565b805f5b838110156136d05781516136b7888261365e565b97506136c283613675565b9250506001810190506136a3565b5085935050505092915050565b5f60a0820190506136f05f830188612869565b6136fd6020830187612ed5565b818103604083015261370f8186613681565b905061371e6060830185612af2565b61372b6080830184612869565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61376c826127c5565b9150613777836127c5565b92508261378757613786613735565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6137ec6021836126ba565b91506137f782613792565b604082019050919050565b5f6020820190508181035f830152613819816137e0565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613854601b836126ba565b915061385f82613820565b602082019050919050565b5f6020820190508181035f83015261388181613848565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220651f8e4d4feb965ce41e18311858d81263973af9d78a241331ac3b6a341ec61464736f6c63430008170033

Deployed Bytecode Sourcemap

3489:9388:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5518:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6351:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4693:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5795:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6520:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6655:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5704:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10987:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11157:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12196:348;;;;;;;;;;;;;:::i;:::-;;5898:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2570:148;;;;;;;;;;;;;:::i;:::-;;10511:196;;;;;;;;;;;;;:::i;:::-;;4508:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11248:673;;;;;;;;;;;;;:::i;:::-;;2356:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4568:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5609:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12550:324;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6025:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4630:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3878:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10815:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6200:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11933:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5518:83;5555:13;5588:5;;;;;;;;;;;;;;;;;5581:12;;5518:83;:::o;6351:161::-;6426:4;6443:39;6452:12;:10;:12::i;:::-;6466:7;6475:6;6443:8;:39::i;:::-;6500:4;6493:11;;6351:161;;;;:::o;4693:51::-;;;;:::o;5795:95::-;5848:7;4323:1;4378:2;:13;;;;:::i;:::-;4366:9;:25;;;;:::i;:::-;5868:14;;5795:95;:::o;6520:127::-;6581:4;6598:19;6606:10;6598:7;:19::i;:::-;6635:4;6628:11;;6520:127;;;:::o;6655:313::-;6753:4;6770:36;6780:6;6788:9;6799:6;6770:9;:36::i;:::-;6817:121;6826:6;6834:12;:10;:12::i;:::-;6848:89;6886:6;6848:89;;;;;;;;;;;;;;;;;:11;:19;6860:6;6848:19;;;;;;;;;;;;;;;:33;6868:12;:10;:12::i;:::-;6848:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6817:8;:121::i;:::-;6956:4;6949:11;;6655:313;;;;;:::o;5704:83::-;5745:5;4323:1;5763:16;;5704:83;:::o;10987:162::-;2493:12;:10;:12::i;:::-;2483:22;;:6;;;;;;;;;;:22;;;2475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11060:6:::1;11055:87;11076:6;:13;11072:1;:17;11055:87;;;11127:5;11109:4;:15;11114:6;11121:1;11114:9;;;;;;;;:::i;:::-;;;;;;;;11109:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11091:3;;;;;;;11055:87;;;;10987:162:::0;:::o;11157:83::-;11204:4;11225;:7;11230:1;11225:7;;;;;;;;;;;;;;;;;;;;;;;;;11218:14;;11157:83;;;:::o;12196:348::-;12260:10;;;;;;;;;;;12246:24;;:12;:10;:12::i;:::-;:24;;;12238:33;;;;;;12282:20;12303:24;12321:4;12303:9;:24::i;:::-;12282:45;;12354:1;12341:12;:14;12338:73;;;12369:30;12386:12;12369:16;:30::i;:::-;12338:73;12421:18;12440:21;12421:40;;12486:1;12475:10;:12;12472:65;;;12501:24;12514:10;12501:12;:24::i;:::-;12472:65;12227:317;;12196:348::o;5898:119::-;5964:7;5991:9;:18;6001:7;5991:18;;;;;;;;;;;;;;;;5984:25;;5898:119;;;:::o;2570:148::-;2493:12;:10;:12::i;:::-;2483:22;;:6;;;;;;;;;;:22;;;2475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2677:1:::1;2640:40;;2661:6;::::0;::::1;;;;;;;;2640:40;;;;;;;;;;;;2708:1;2691:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2570:148::o:0;10511:196::-;2493:12;:10;:12::i;:::-;2483:22;;:6;;;;;;;;;;:22;;;2475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4323:1:::1;4378:2;:13;;;;:::i;:::-;4366:9;:25;;;;:::i;:::-;10564:12;:22;;;;4323:1;4378:2;:13;;;;:::i;:::-;4366:9;:25;;;;:::i;:::-;10597:14;:22;;;;10651:5;10630:20;;:26;;;;;;;;;;;;;;;;;;10672:27;4323:1;4378:2;:13;;;;:::i;:::-;4366:9;:25;;;;:::i;:::-;10672:27;;;;;;:::i;:::-;;;;;;;;10511:196::o:0;4508:53::-;;;;:::o;11248:673::-;2493:12;:10;:12::i;:::-;2483:22;;:6;;;;;;;;;;:22;;;2475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11314:11:::1;::::0;::::1;;;;;;;;11313:12;11305:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11400:42;11363:15;;:80;;;;;;;;;;;;;;;;;;11454:58;11471:4;11486:15;;;;;;;;;;;4323:1;4378:2;:13;;;;:::i;:::-;4366:9;:25;;;;:::i;:::-;11454:8;:58::i;:::-;11557:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11539:55;;;11603:4;11610:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11539:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11523:13;;:110;;;;;;;;;;;;;;;;;;11644:15;;;;;;;;;;;:31;;;11683:21;11714:4;11720:24;11738:4;11720:9;:24::i;:::-;11745:1;11747::::0;11749:7:::1;:5;:7::i;:::-;11757:15;11644:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11791:13;;;;;;;;;;;11784:29;;;11822:15;;;;;;;;;;;11840:14;11784:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11880:4;11866:11;;:18;;;;;;;;;;;;;;;;;;11909:4;11895:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;11248:673::o:0;2356:79::-;2394:7;2421:6;;;;;;;;;;;2414:13;;2356:79;:::o;4568:55::-;;;;:::o;5609:87::-;5648:13;5681:7;;;;;;;;;;;;;;;;;5674:14;;5609:87;:::o;12550:324::-;12626:12;12669:1;12659:6;:11;12656:96;;12702:12;12695:30;;;12734:4;12695:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12686:54;;12656:96;12767:32;12778:12;12792:6;12767:32;;;;;;;:::i;:::-;;;;;;;;12824:12;12817:29;;;12847:10;;;;;;;;;;;12859:6;12817:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12810:56;;12550:324;;;;:::o;6025:167::-;6103:4;6120:42;6130:12;:10;:12::i;:::-;6144:9;6155:6;6120:9;:42::i;:::-;6180:4;6173:11;;6025:167;;;;:::o;4630:56::-;;;;:::o;3878:39::-;;;;;;;;;;;;;:::o;10815:164::-;2493:12;:10;:12::i;:::-;2483:22;;:6;;;;;;;;;;:22;;;2475:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10889:6:::1;10884:88;10905:5;:12;10901:1;:16;10884:88;;;10956:4;10939;:14;10944:5;10950:1;10944:8;;;;;;;;:::i;:::-;;;;;;;;10939:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;10919:3;;;;;;;10884:88;;;;10815:164:::0;:::o;6200:143::-;6281:7;6308:11;:18;6320:5;6308:18;;;;;;;;;;;;;;;:27;6327:7;6308:27;;;;;;;;;;;;;;;;6301:34;;6200:143;;;;:::o;11933:218::-;12008:10;;;;;;;;;;;11994:24;;:12;:10;:12::i;:::-;:24;;;11986:33;;;;;;12045:12;;12036:7;:21;;:47;;;;;12070:13;;12061:7;:22;;12036:47;12028:56;;;;;;12106:7;12093:12;:20;;;;12136:7;12122:13;:21;;;;11933:218;:::o;111:98::-;164:7;191:10;184:17;;111:98;:::o;6976:335::-;7086:1;7069:19;;:5;:19;;;7061:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7167:1;7148:21;;:7;:21;;;7140:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7249:6;7219:11;:18;7231:5;7219:18;;;;;;;;;;;;;;;:27;7238:7;7219:27;;;;;;;;;;;;;;;:36;;;;7287:7;7271:32;;7280:5;7271:32;;;7296:6;7271:32;;;;;;:::i;:::-;;;;;;;;6976:335;;;:::o;7319:131::-;7422:1;7408:10;:15;7400:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;7319:131;:::o;7458:2446::-;7562:1;7546:18;;:4;:18;;;7538:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7639:1;7625:16;;:2;:16;;;7617:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7709:1;7700:6;:10;7692:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7767:17;7809:7;:5;:7::i;:::-;7801:15;;:4;:15;;;;:32;;;;;7826:7;:5;:7::i;:::-;7820:13;;:2;:13;;;;7801:32;7797:1751;;;7859:4;:10;7864:4;7859:10;;;;;;;;;;;;;;;;;;;;;;;;;7858:11;:24;;;;;7874:4;:8;7879:2;7874:8;;;;;;;;;;;;;;;;;;;;;;;;;7873:9;7858:24;7850:33;;;;;;7910:76;7982:3;7910:67;7932:15;;7922:9;;:25;7921:55;;7962:14;;7921:55;;;7949:12;;7921:55;7910:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7898:88;;8007:20;;;;;;;;;;;8003:508;;;8068:15;;;;;;;;;;;8054:30;;:2;:30;;;;:62;;;;;8102:13;;;;;;;;;;;8088:28;;:2;:28;;;;8054:62;8050:444;;;8252:12;8179:28;:39;8208:9;8179:39;;;;;;;;;;;;;;;;:85;8143:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8460:12;8418:28;:39;8447:9;8418:39;;;;;;;;;;;;;;;:54;;;;8050:444;8003:508;8539:13;;;;;;;;;;;8531:21;;:4;:21;;;:55;;;;;8570:15;;;;;;;;;;;8556:30;;:2;:30;;;;8531:55;:83;;;;;8592:18;:22;8611:2;8592:22;;;;;;;;;;;;;;;;;;;;;;;;;8590:24;8531:83;8527:313;;;8654:12;;8644:6;:22;;8636:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8749:14;;8739:6;8723:13;8733:2;8723:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8715:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8813:9;;:11;;;;;;;;;:::i;:::-;;;;;;8527:313;8865:13;;;;;;;;;;;8859:19;;:2;:19;;;:43;;;;;8897:4;8882:20;;:4;:20;;;;8859:43;8856:174;;;8935:79;9010:3;8935:70;8957:16;;8947:9;;:26;8946:58;;8989:15;;8946:58;;;8975:13;;8946:58;8935:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8923:91;;8856:174;9046:28;9077:24;9095:4;9077:9;:24::i;:::-;9046:55;;9121:6;;;;;;;;;;;9120:7;:32;;;;;9139:13;;;;;;;;;;;9131:21;;:2;:21;;;9120:32;:47;;;;;9156:11;;;;;;;;;;;9120:47;:89;;;;;9192:17;;9171:20;:38;9120:89;:121;;;;;9223:18;;9213:9;;:28;9120:121;9116:421;;;9262:67;9279:49;9283:6;9290:37;9294:20;9315:11;;9290:3;:37::i;:::-;9279:3;:49::i;:::-;9262:16;:67::i;:::-;9348:26;9377:21;9348:50;;9441:1;9420:18;:22;9417:105;;;9467:35;9480:21;9467:12;:35::i;:::-;9417:105;9243:294;9116:421;7835:1713;7797:1751;9573:1;9563:9;:11;9560:161;;;9613:39;9642:9;9613;:24;9631:4;9613:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9588:9;:24;9606:4;9588:24;;;;;;;;;;;;;;;:64;;;;9693:4;9670:39;;9679:4;9670:39;;;9699:9;9670:39;;;;;;:::i;:::-;;;;;;;;9560:161;9747:27;9767:6;9747:9;:15;9757:4;9747:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9731:9;:15;9741:4;9731:15;;;;;;;;;;;;;;;:43;;;;9799:40;9817:21;9828:9;9817:6;:10;;:21;;;;:::i;:::-;9799:9;:13;9809:2;9799:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9785:9;:13;9795:2;9785:13;;;;;;;;;;;;;;;:54;;;;9870:2;9855:41;;9864:4;9855:41;;;9874:21;9885:9;9874:6;:10;;:21;;;;:::i;:::-;9855:41;;;;;;:::i;:::-;;;;;;;;7527:2377;7458:2446;;;:::o;1248:190::-;1334:7;1367:1;1362;:6;;1370:12;1354:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1394:9;1410:1;1406;:5;;;;:::i;:::-;1394:17;;1429:1;1422:8;;;1248:190;;;;;:::o;10020:483::-;5035:4;5026:6;;:13;;;;;;;;;;;;;;;;;;10098:21:::1;10136:1;10122:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10098:40;;10167:4;10149;10154:1;10149:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10193:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10183:4;10188:1;10183:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10226:62;10243:4;10258:15;;;;;;;;;;;10276:11;10226:8;:62::i;:::-;10299:15;;;;;;;;;;;:66;;;10380:11;10406:1;10422:4;10449;10469:15;10299:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10087:416;5071:5:::0;5062:6;;:14;;;;;;;;;;;;;;;;;;10020:483;:::o;10715:92::-;10772:10;;;;;;;;;;;:19;;:27;10792:6;10772:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10715:92;:::o;1446:246::-;1504:7;1533:1;1528;:6;1524:47;;1558:1;1551:8;;;;1524:47;1581:9;1597:1;1593;:5;;;;:::i;:::-;1581:17;;1626:1;1621;1617;:5;;;;:::i;:::-;:10;1609:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1683:1;1676:8;;;1446:246;;;;;:::o;1700:132::-;1758:7;1785:39;1789:1;1792;1785:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1778:46;;1700:132;;;;:::o;9914:98::-;9971:7;9998:1;9996;:3;9995:9;;10003:1;9995:9;;;10001:1;9995:9;9988:16;;9914:98;;;;:::o;917:179::-;975:7;995:9;1011:1;1007;:5;;;;:::i;:::-;995:17;;1036:1;1031;:6;;1023:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1087:1;1080:8;;;917:179;;;;:::o;1104:136::-;1162:7;1189:43;1193:1;1196;1189:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1182:50;;1104:136;;;;:::o;1840:189::-;1926:7;1958:1;1954;:5;1961:12;1946:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1985:9;2001:1;1997;:5;;;;:::i;:::-;1985:17;;2020:1;2013:8;;;1840: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:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:117::-;5297:1;5294;5287:12;5311:180;5359:77;5356:1;5349:88;5456:4;5453:1;5446:15;5480:4;5477:1;5470:15;5497:281;5580:27;5602:4;5580:27;:::i;:::-;5572:6;5568:40;5710:6;5698:10;5695:22;5674:18;5662:10;5659:34;5656:62;5653:88;;;5721:18;;:::i;:::-;5653:88;5761:10;5757:2;5750:22;5540:238;5497:281;;:::o;5784:129::-;5818:6;5845:20;;:::i;:::-;5835:30;;5874:33;5902:4;5894:6;5874:33;:::i;:::-;5784:129;;;:::o;5919:311::-;5996:4;6086:18;6078:6;6075:30;6072:56;;;6108:18;;:::i;:::-;6072:56;6158:4;6150:6;6146:17;6138:25;;6218:4;6212;6208:15;6200:23;;5919:311;;;:::o;6236:117::-;6345:1;6342;6335:12;6376:710;6472:5;6497:81;6513:64;6570:6;6513:64;:::i;:::-;6497:81;:::i;:::-;6488:90;;6598:5;6627:6;6620:5;6613:21;6661:4;6654:5;6650:16;6643:23;;6714:4;6706:6;6702:17;6694:6;6690:30;6743:3;6735:6;6732:15;6729:122;;;6762:79;;:::i;:::-;6729:122;6877:6;6860:220;6894:6;6889:3;6886:15;6860:220;;;6969:3;6998:37;7031:3;7019:10;6998:37;:::i;:::-;6993:3;6986:50;7065:4;7060:3;7056:14;7049:21;;6936:144;6920:4;6915:3;6911:14;6904:21;;6860:220;;;6864:21;6478:608;;6376:710;;;;;:::o;7109:370::-;7180:5;7229:3;7222:4;7214:6;7210:17;7206:27;7196:122;;7237:79;;:::i;:::-;7196:122;7354:6;7341:20;7379:94;7469:3;7461:6;7454:4;7446:6;7442:17;7379:94;:::i;:::-;7370:103;;7186:293;7109:370;;;;:::o;7485:539::-;7569:6;7618:2;7606:9;7597:7;7593:23;7589:32;7586:119;;;7624:79;;:::i;:::-;7586:119;7772:1;7761:9;7757:17;7744:31;7802:18;7794:6;7791:30;7788:117;;;7824:79;;:::i;:::-;7788:117;7929:78;7999:7;7990:6;7979:9;7975:22;7929:78;:::i;:::-;7919:88;;7715:302;7485:539;;;;:::o;8030:329::-;8089:6;8138:2;8126:9;8117:7;8113:23;8109:32;8106:119;;;8144:79;;:::i;:::-;8106:119;8264:1;8289:53;8334:7;8325:6;8314:9;8310:22;8289:53;:::i;:::-;8279:63;;8235:117;8030:329;;;;:::o;8365:118::-;8452:24;8470:5;8452:24;:::i;:::-;8447:3;8440:37;8365:118;;:::o;8489:222::-;8582:4;8620:2;8609:9;8605:18;8597:26;;8633:71;8701:1;8690:9;8686:17;8677:6;8633:71;:::i;:::-;8489:222;;;;:::o;8717:474::-;8785:6;8793;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;9095:2;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9066:118;8717:474;;;;;:::o;9197:180::-;9245:77;9242:1;9235:88;9342:4;9339:1;9332:15;9366:4;9363:1;9356:15;9383:102;9425:8;9472:5;9469:1;9465:13;9444:34;;9383:102;;;:::o;9491:848::-;9552:5;9559:4;9583:6;9574:15;;9607:5;9598:14;;9621:712;9642:1;9632:8;9629:15;9621:712;;;9737:4;9732:3;9728:14;9722:4;9719:24;9716:50;;;9746:18;;:::i;:::-;9716:50;9796:1;9786:8;9782:16;9779:451;;;10211:4;10204:5;10200:16;10191:25;;9779:451;10261:4;10255;10251:15;10243:23;;10291:32;10314:8;10291:32;:::i;:::-;10279:44;;9621:712;;;9491:848;;;;;;;:::o;10345:1073::-;10399:5;10590:8;10580:40;;10611:1;10602:10;;10613:5;;10580:40;10639:4;10629:36;;10656:1;10647:10;;10658:5;;10629:36;10725:4;10773:1;10768:27;;;;10809:1;10804:191;;;;10718:277;;10768:27;10786:1;10777:10;;10788:5;;;10804:191;10849:3;10839:8;10836:17;10833:43;;;10856:18;;:::i;:::-;10833:43;10905:8;10902:1;10898:16;10889:25;;10940:3;10933:5;10930:14;10927:40;;;10947:18;;:::i;:::-;10927:40;10980:5;;;10718:277;;11104:2;11094:8;11091:16;11085:3;11079:4;11076:13;11072:36;11054:2;11044:8;11041:16;11036:2;11030:4;11027:12;11023:35;11007:111;11004:246;;;11160:8;11154:4;11150:19;11141:28;;11195:3;11188:5;11185:14;11182:40;;;11202:18;;:::i;:::-;11182:40;11235:5;;11004:246;11275:42;11313:3;11303:8;11297:4;11294:1;11275:42;:::i;:::-;11260:57;;;;11349:4;11344:3;11340:14;11333:5;11330:25;11327:51;;;11358:18;;:::i;:::-;11327:51;11407:4;11400:5;11396:16;11387:25;;10345:1073;;;;;;:::o;11424:281::-;11482:5;11506:23;11524:4;11506:23;:::i;:::-;11498:31;;11550:25;11566:8;11550:25;:::i;:::-;11538:37;;11594:104;11631:66;11621:8;11615:4;11594:104;:::i;:::-;11585:113;;11424:281;;;;:::o;11711:410::-;11751:7;11774:20;11792:1;11774:20;:::i;:::-;11769:25;;11808:20;11826:1;11808:20;:::i;:::-;11803:25;;11863:1;11860;11856:9;11885:30;11903:11;11885:30;:::i;:::-;11874:41;;12064:1;12055:7;12051:15;12048:1;12045:22;12025:1;12018:9;11998:83;11975:139;;12094:18;;:::i;:::-;11975:139;11759:362;11711:410;;;;:::o;12127:182::-;12267:34;12263:1;12255:6;12251:14;12244:58;12127:182;:::o;12315:366::-;12457:3;12478:67;12542:2;12537:3;12478:67;:::i;:::-;12471:74;;12554:93;12643:3;12554:93;:::i;:::-;12672:2;12667:3;12663:12;12656:19;;12315:366;;;:::o;12687:419::-;12853:4;12891:2;12880:9;12876:18;12868:26;;12940:9;12934:4;12930:20;12926:1;12915:9;12911:17;12904:47;12968:131;13094:4;12968:131;:::i;:::-;12960:139;;12687:419;;;:::o;13112:180::-;13160:77;13157:1;13150:88;13257:4;13254:1;13247:15;13281:4;13278:1;13271:15;13298:173;13438:25;13434:1;13426:6;13422:14;13415:49;13298:173;:::o;13477:366::-;13619:3;13640:67;13704:2;13699:3;13640:67;:::i;:::-;13633:74;;13716:93;13805:3;13716:93;:::i;:::-;13834:2;13829:3;13825:12;13818:19;;13477:366;;;:::o;13849:419::-;14015:4;14053:2;14042:9;14038:18;14030:26;;14102:9;14096:4;14092:20;14088:1;14077:9;14073:17;14066:47;14130:131;14256:4;14130:131;:::i;:::-;14122:139;;13849:419;;;:::o;14274:143::-;14331:5;14362:6;14356:13;14347:22;;14378:33;14405:5;14378:33;:::i;:::-;14274:143;;;;:::o;14423:351::-;14493:6;14542:2;14530:9;14521:7;14517:23;14513:32;14510:119;;;14548:79;;:::i;:::-;14510:119;14668:1;14693:64;14749:7;14740:6;14729:9;14725:22;14693:64;:::i;:::-;14683:74;;14639:128;14423:351;;;;:::o;14780:332::-;14901:4;14939:2;14928:9;14924:18;14916:26;;14952:71;15020:1;15009:9;15005:17;14996:6;14952:71;:::i;:::-;15033:72;15101:2;15090:9;15086:18;15077:6;15033:72;:::i;:::-;14780:332;;;;;:::o;15118:85::-;15163:7;15192:5;15181:16;;15118:85;;;:::o;15209:60::-;15237:3;15258:5;15251:12;;15209:60;;;:::o;15275:158::-;15333:9;15366:61;15384:42;15393:32;15419:5;15393:32;:::i;:::-;15384:42;:::i;:::-;15366:61;:::i;:::-;15353:74;;15275:158;;;:::o;15439:147::-;15534:45;15573:5;15534:45;:::i;:::-;15529:3;15522:58;15439:147;;:::o;15592:807::-;15841:4;15879:3;15868:9;15864:19;15856:27;;15893:71;15961:1;15950:9;15946:17;15937:6;15893:71;:::i;:::-;15974:72;16042:2;16031:9;16027:18;16018:6;15974:72;:::i;:::-;16056:80;16132:2;16121:9;16117:18;16108:6;16056:80;:::i;:::-;16146;16222:2;16211:9;16207:18;16198:6;16146:80;:::i;:::-;16236:73;16304:3;16293:9;16289:19;16280:6;16236:73;:::i;:::-;16319;16387:3;16376:9;16372:19;16363:6;16319:73;:::i;:::-;15592:807;;;;;;;;;:::o;16405:143::-;16462:5;16493:6;16487:13;16478:22;;16509:33;16536:5;16509:33;:::i;:::-;16405:143;;;;:::o;16554:663::-;16642:6;16650;16658;16707:2;16695:9;16686:7;16682:23;16678:32;16675:119;;;16713:79;;:::i;:::-;16675:119;16833:1;16858:64;16914:7;16905:6;16894:9;16890:22;16858:64;:::i;:::-;16848:74;;16804:128;16971:2;16997:64;17053:7;17044:6;17033:9;17029:22;16997:64;:::i;:::-;16987:74;;16942:129;17110:2;17136:64;17192:7;17183:6;17172:9;17168:22;17136:64;:::i;:::-;17126:74;;17081:129;16554:663;;;;;:::o;17223:332::-;17344:4;17382:2;17371:9;17367:18;17359:26;;17395:71;17463:1;17452:9;17448:17;17439:6;17395:71;:::i;:::-;17476:72;17544:2;17533:9;17529:18;17520:6;17476:72;:::i;:::-;17223:332;;;;;:::o;17561:116::-;17631:21;17646:5;17631:21;:::i;:::-;17624:5;17621:32;17611:60;;17667:1;17664;17657:12;17611:60;17561:116;:::o;17683:137::-;17737:5;17768:6;17762:13;17753:22;;17784:30;17808:5;17784:30;:::i;:::-;17683:137;;;;:::o;17826:345::-;17893:6;17942:2;17930:9;17921:7;17917:23;17913:32;17910:119;;;17948:79;;:::i;:::-;17910:119;18068:1;18093:61;18146:7;18137:6;18126:9;18122:22;18093:61;:::i;:::-;18083:71;;18039:125;17826:345;;;;:::o;18177:351::-;18247:6;18296:2;18284:9;18275:7;18271:23;18267:32;18264:119;;;18302:79;;:::i;:::-;18264:119;18422:1;18447:64;18503:7;18494:6;18483:9;18479:22;18447:64;:::i;:::-;18437:74;;18393:128;18177:351;;;;:::o;18534:142::-;18584:9;18617:53;18635:34;18644:24;18662:5;18644:24;:::i;:::-;18635:34;:::i;:::-;18617:53;:::i;:::-;18604:66;;18534:142;;;:::o;18682:126::-;18732:9;18765:37;18796:5;18765:37;:::i;:::-;18752:50;;18682:126;;;:::o;18814:134::-;18872:9;18905:37;18936:5;18905:37;:::i;:::-;18892:50;;18814:134;;;:::o;18954:147::-;19049:45;19088:5;19049:45;:::i;:::-;19044:3;19037:58;18954:147;;:::o;19107:348::-;19236:4;19274:2;19263:9;19259:18;19251:26;;19287:79;19363:1;19352:9;19348:17;19339:6;19287:79;:::i;:::-;19376:72;19444:2;19433:9;19429:18;19420:6;19376:72;:::i;:::-;19107:348;;;;;:::o;19461:223::-;19601:34;19597:1;19589:6;19585:14;19578:58;19670:6;19665:2;19657:6;19653:15;19646:31;19461:223;:::o;19690:366::-;19832:3;19853:67;19917:2;19912:3;19853:67;:::i;:::-;19846:74;;19929:93;20018:3;19929:93;:::i;:::-;20047:2;20042:3;20038:12;20031:19;;19690:366;;;:::o;20062:419::-;20228:4;20266:2;20255:9;20251:18;20243:26;;20315:9;20309:4;20305:20;20301:1;20290:9;20286:17;20279:47;20343:131;20469:4;20343:131;:::i;:::-;20335:139;;20062:419;;;:::o;20487:221::-;20627:34;20623:1;20615:6;20611:14;20604:58;20696:4;20691:2;20683:6;20679:15;20672:29;20487:221;:::o;20714:366::-;20856:3;20877:67;20941:2;20936:3;20877:67;:::i;:::-;20870:74;;20953:93;21042:3;20953:93;:::i;:::-;21071:2;21066:3;21062:12;21055:19;;20714:366;;;:::o;21086:419::-;21252:4;21290:2;21279:9;21275:18;21267:26;;21339:9;21333:4;21329:20;21325:1;21314:9;21310:17;21303:47;21367:131;21493:4;21367:131;:::i;:::-;21359:139;;21086:419;;;:::o;21511:164::-;21651:16;21647:1;21639:6;21635:14;21628:40;21511:164;:::o;21681:366::-;21823:3;21844:67;21908:2;21903:3;21844:67;:::i;:::-;21837:74;;21920:93;22009:3;21920:93;:::i;:::-;22038:2;22033:3;22029:12;22022:19;;21681:366;;;:::o;22053:419::-;22219:4;22257:2;22246:9;22242:18;22234:26;;22306:9;22300:4;22296:20;22292:1;22281:9;22277:17;22270:47;22334:131;22460:4;22334:131;:::i;:::-;22326:139;;22053:419;;;:::o;22478:224::-;22618:34;22614:1;22606:6;22602:14;22595:58;22687:7;22682:2;22674:6;22670:15;22663:32;22478:224;:::o;22708:366::-;22850:3;22871:67;22935:2;22930:3;22871:67;:::i;:::-;22864:74;;22947:93;23036:3;22947:93;:::i;:::-;23065:2;23060:3;23056:12;23049:19;;22708:366;;;:::o;23080:419::-;23246:4;23284:2;23273:9;23269:18;23261:26;;23333:9;23327:4;23323:20;23319:1;23308:9;23304:17;23297:47;23361:131;23487:4;23361:131;:::i;:::-;23353:139;;23080:419;;;:::o;23505:222::-;23645:34;23641:1;23633:6;23629:14;23622:58;23714:5;23709:2;23701:6;23697:15;23690:30;23505:222;:::o;23733:366::-;23875:3;23896:67;23960:2;23955:3;23896:67;:::i;:::-;23889:74;;23972:93;24061:3;23972:93;:::i;:::-;24090:2;24085:3;24081:12;24074:19;;23733:366;;;:::o;24105:419::-;24271:4;24309:2;24298:9;24294:18;24286:26;;24358:9;24352:4;24348:20;24344:1;24333:9;24329:17;24322:47;24386:131;24512:4;24386:131;:::i;:::-;24378:139;;24105:419;;;:::o;24530:228::-;24670:34;24666:1;24658:6;24654:14;24647:58;24739:11;24734:2;24726:6;24722:15;24715:36;24530:228;:::o;24764:366::-;24906:3;24927:67;24991:2;24986:3;24927:67;:::i;:::-;24920:74;;25003:93;25092:3;25003:93;:::i;:::-;25121:2;25116:3;25112:12;25105:19;;24764:366;;;:::o;25136:419::-;25302:4;25340:2;25329:9;25325:18;25317:26;;25389:9;25383:4;25379:20;25375:1;25364:9;25360:17;25353:47;25417:131;25543:4;25417:131;:::i;:::-;25409:139;;25136:419;;;:::o;25561:297::-;25701:34;25697:1;25689:6;25685:14;25678:58;25770:34;25765:2;25757:6;25753:15;25746:59;25839:11;25834:2;25826:6;25822:15;25815:36;25561:297;:::o;25864:366::-;26006:3;26027:67;26091:2;26086:3;26027:67;:::i;:::-;26020:74;;26103:93;26192:3;26103:93;:::i;:::-;26221:2;26216:3;26212:12;26205:19;;25864:366;;;:::o;26236:419::-;26402:4;26440:2;26429:9;26425:18;26417:26;;26489:9;26483:4;26479:20;26475:1;26464:9;26460:17;26453:47;26517:131;26643:4;26517:131;:::i;:::-;26509:139;;26236:419;;;:::o;26661:175::-;26801:27;26797:1;26789:6;26785:14;26778:51;26661:175;:::o;26842:366::-;26984:3;27005:67;27069:2;27064:3;27005:67;:::i;:::-;26998:74;;27081:93;27170:3;27081:93;:::i;:::-;27199:2;27194:3;27190:12;27183:19;;26842:366;;;:::o;27214:419::-;27380:4;27418:2;27407:9;27403:18;27395:26;;27467:9;27461:4;27457:20;27453:1;27442:9;27438:17;27431:47;27495:131;27621:4;27495:131;:::i;:::-;27487:139;;27214:419;;;:::o;27639:191::-;27679:3;27698:20;27716:1;27698:20;:::i;:::-;27693:25;;27732:20;27750:1;27732:20;:::i;:::-;27727:25;;27775:1;27772;27768:9;27761:16;;27796:3;27793:1;27790:10;27787:36;;;27803:18;;:::i;:::-;27787:36;27639:191;;;;:::o;27836:176::-;27976:28;27972:1;27964:6;27960:14;27953:52;27836:176;:::o;28018:366::-;28160:3;28181:67;28245:2;28240:3;28181:67;:::i;:::-;28174:74;;28257:93;28346:3;28257:93;:::i;:::-;28375:2;28370:3;28366:12;28359:19;;28018:366;;;:::o;28390:419::-;28556:4;28594:2;28583:9;28579:18;28571:26;;28643:9;28637:4;28633:20;28629:1;28618:9;28614:17;28607:47;28671:131;28797:4;28671:131;:::i;:::-;28663:139;;28390:419;;;:::o;28815:233::-;28854:3;28877:24;28895:5;28877:24;:::i;:::-;28868:33;;28923:66;28916:5;28913:77;28910:103;;28993:18;;:::i;:::-;28910:103;29040:1;29033:5;29029:13;29022:20;;28815:233;;;:::o;29054:194::-;29094:4;29114:20;29132:1;29114:20;:::i;:::-;29109:25;;29148:20;29166:1;29148:20;:::i;:::-;29143:25;;29192:1;29189;29185:9;29177:17;;29216:1;29210:4;29207:11;29204:37;;;29221:18;;:::i;:::-;29204:37;29054:194;;;;:::o;29254:114::-;29321:6;29355:5;29349:12;29339:22;;29254:114;;;:::o;29374:184::-;29473:11;29507:6;29502:3;29495:19;29547:4;29542:3;29538:14;29523:29;;29374:184;;;;:::o;29564:132::-;29631:4;29654:3;29646:11;;29684:4;29679:3;29675:14;29667:22;;29564:132;;;:::o;29702:108::-;29779:24;29797:5;29779:24;:::i;:::-;29774:3;29767:37;29702:108;;:::o;29816:179::-;29885:10;29906:46;29948:3;29940:6;29906:46;:::i;:::-;29984:4;29979:3;29975:14;29961:28;;29816:179;;;;:::o;30001:113::-;30071:4;30103;30098:3;30094:14;30086:22;;30001:113;;;:::o;30150:732::-;30269:3;30298:54;30346:5;30298:54;:::i;:::-;30368:86;30447:6;30442:3;30368:86;:::i;:::-;30361:93;;30478:56;30528:5;30478:56;:::i;:::-;30557:7;30588:1;30573:284;30598:6;30595:1;30592:13;30573:284;;;30674:6;30668:13;30701:63;30760:3;30745:13;30701:63;:::i;:::-;30694:70;;30787:60;30840:6;30787:60;:::i;:::-;30777:70;;30633:224;30620:1;30617;30613:9;30608:14;;30573:284;;;30577:14;30873:3;30866:10;;30274:608;;;30150:732;;;;:::o;30888:831::-;31151:4;31189:3;31178:9;31174:19;31166:27;;31203:71;31271:1;31260:9;31256:17;31247:6;31203:71;:::i;:::-;31284:80;31360:2;31349:9;31345:18;31336:6;31284:80;:::i;:::-;31411:9;31405:4;31401:20;31396:2;31385:9;31381:18;31374:48;31439:108;31542:4;31533:6;31439:108;:::i;:::-;31431:116;;31557:72;31625:2;31614:9;31610:18;31601:6;31557:72;:::i;:::-;31639:73;31707:3;31696:9;31692:19;31683:6;31639:73;:::i;:::-;30888:831;;;;;;;;:::o;31725:180::-;31773:77;31770:1;31763:88;31870:4;31867:1;31860:15;31894:4;31891:1;31884:15;31911:185;31951:1;31968:20;31986:1;31968:20;:::i;:::-;31963:25;;32002:20;32020:1;32002:20;:::i;:::-;31997:25;;32041:1;32031:35;;32046:18;;:::i;:::-;32031:35;32088:1;32085;32081:9;32076:14;;31911:185;;;;:::o;32102:220::-;32242:34;32238:1;32230:6;32226:14;32219:58;32311:3;32306:2;32298:6;32294:15;32287:28;32102:220;:::o;32328:366::-;32470:3;32491:67;32555:2;32550:3;32491:67;:::i;:::-;32484:74;;32567:93;32656:3;32567:93;:::i;:::-;32685:2;32680:3;32676:12;32669:19;;32328:366;;;:::o;32700:419::-;32866:4;32904:2;32893:9;32889:18;32881:26;;32953:9;32947:4;32943:20;32939:1;32928:9;32924:17;32917:47;32981:131;33107:4;32981:131;:::i;:::-;32973:139;;32700:419;;;:::o;33125:177::-;33265:29;33261:1;33253:6;33249:14;33242:53;33125:177;:::o;33308:366::-;33450:3;33471:67;33535:2;33530:3;33471:67;:::i;:::-;33464:74;;33547:93;33636:3;33547:93;:::i;:::-;33665:2;33660:3;33656:12;33649:19;;33308:366;;;:::o;33680:419::-;33846:4;33884:2;33873:9;33869:18;33861:26;;33933:9;33927:4;33923:20;33919:1;33908:9;33904:17;33897:47;33961:131;34087:4;33961:131;:::i;:::-;33953:139;;33680:419;;;:::o

Swarm Source

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