ETH Price: $3,471.85 (+1.06%)

Token

Depinet (DEPIN)
 

Overview

Max Total Supply

100,000,000 DEPIN

Holders

273

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
20,732.008174487 DEPIN

Value
$0.00
0x76916ea8c21ba08eb11edbdd9f6662fb0302c7c7
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

DEPINET is a decentralized ecosystem committed to empowering users with greater control, privacy, and freedom across the digital landscape.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
DEPINET

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

$$$$$$$\  $$$$$$$$\ $$$$$$$\ $$$$$$\ $$\   $$\ $$$$$$$$\ $$$$$$$$\ 
$$  __$$\ $$  _____|$$  __$$\\_$$  _|$$$\  $$ |$$  _____|\__$$  __|
$$ |  $$ |$$ |      $$ |  $$ | $$ |  $$$$\ $$ |$$ |         $$ |   
$$ |  $$ |$$$$$\    $$$$$$$  | $$ |  $$ $$\$$ |$$$$$\       $$ |   
$$ |  $$ |$$  __|   $$  ____/  $$ |  $$ \$$$$ |$$  __|      $$ |   
$$ |  $$ |$$ |      $$ |       $$ |  $$ |\$$$ |$$ |         $$ |   
$$$$$$$  |$$$$$$$$\ $$ |     $$$$$$\ $$ | \$$ |$$$$$$$$\    $$ |   
\_______/ \________|\__|     \______|\__|  \__|\________|   \__|   
                                                                   
                                                                 
DEPINET is a decentralized ecosystem designed to restore privacy, freedom, and user control online.

Website : https://depinet.io/
Documentation : https://docs.depinet.app/
App : https://linktr.ee/depinetlabs
Twitter : https://x.com/depinetlabs
Telegram : https://t.me/depinetlabs

**/

// SPDX-License-Identifier: MIT
 
pragma solidity 0.8.24;
 
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 DEPINET is Context, IERC20, Ownable {
 
    using SafeMath for uint256;
 
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
 
    mapping (address => bool) private _isFounderAddr;
    address payable private _isTaxReceiverFee;
 
    uint256 private _initialPurchaseTax=20;
    uint256 private _initialSellTax=25;
 
    uint256 private _closingBuyTax=10;
    uint256 private _closingSellTax=25;
 
    uint256 private _applyLowerBuyTaxAt=19;
    uint256 private _applyLowerSellTaxAt=25;
 
    uint256 private _pauseSwapBefore=20;
    uint256 private _contractCost=0;
    uint256 private _cumulativeBuy=0;
 
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100_000_000 * 10**_decimals;
 
    string private constant _name = "Depinet";
    string private constant _symbol = unicode"DEPIN";
 
    uint256 public _highestBuy =  1_000_000 * 10**_decimals;
    uint256 public _walletMaxCapacity =  1_000_000 * 10**_decimals;
 
    uint256 public _swapTaxBoundary =  700_000 * 10**_decimals;
    uint256 public _taxSwapThreshold = 700_000 * 10**_decimals;
 
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
 
    bool private tradingOpen;
    bool private duringSwap = false;
    bool private swapPermitted = false;
 
    uint256 private totalSell = 0;
    uint256 private finalSellBlock = 0;
 
    uint256 public contractCreationTimestamp;
    uint256 public lastSwapTimestamp;
 
    uint256 public lastTradingOpenTimestamp;
    uint256 public lastTaxChangeTimestamp;
 
    mapping(uint256 => uint256) public feeChangeHistory; // Buy Tax/Sell Tax change record
 
    event MaxTxAmountUpdated(uint _highestBuy);
    event TransferTaxUpdated(uint _tax);
    event TaxUpdated(uint256 newBuyTax, uint256 newSellTax, address indexed updatedBy);
    event TradingOpened(address indexed openedBy, uint256 timestamp);
    event LimitsRemoved(address indexed removedBy);
    event ReceiverFeeUpdated(address indexed oldReceiver, address indexed newReceiver);
    event FeeChanged(uint256 buyTax, uint256 sellTax, address indexed updatedBy, uint256 timestamp);
 
    modifier lockTheSwap {
        duringSwap = true;
        _;
        duringSwap = false;
    }
 
    constructor () {
        contractCreationTimestamp = block.timestamp;
 
        _isTaxReceiverFee = payable(0xCd1458fA3e058379a5d1bbe97dcEc492f007E2a0);
        _balances[_msgSender()] = _tTotal;
        _isFounderAddr[owner()] = true;
        _isFounderAddr[address(this)] = true;
        _isFounderAddr[_isTaxReceiverFee] = true;
 
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
 
        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 transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
 
            if(_cumulativeBuy==0){
                taxAmount = amount.mul((_cumulativeBuy>_applyLowerBuyTaxAt)?_closingBuyTax:_initialPurchaseTax).div(100);
            }
            if(_cumulativeBuy>0){
                taxAmount = amount.mul(_contractCost).div(100);
            }
 
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isFounderAddr[to] ) {
                require(amount <= _highestBuy, "Exceeds the _highestBuy.");
                require(balanceOf(to) + amount <= _walletMaxCapacity, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_cumulativeBuy>_applyLowerBuyTaxAt)?_closingBuyTax:_initialPurchaseTax).div(100);
                _cumulativeBuy++;
            }
 
            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_cumulativeBuy>_applyLowerSellTaxAt)?_closingSellTax:_initialSellTax).div(100);
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            if (!duringSwap && to == uniswapV2Pair && swapPermitted && contractTokenBalance > _swapTaxBoundary && _cumulativeBuy > _pauseSwapBefore) {
                if (block.number > finalSellBlock) {
                    totalSell = 0;
                }
                require(totalSell < 4, "Only 4 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _taxSwapThreshold)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                totalSell++;
                finalSellBlock = block.number;
            }
        }
 
        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }
 
    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function removeCap() external onlyOwner{
        _highestBuy = _tTotal;
        _walletMaxCapacity=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }
 
    function sendETHToFee(uint256 amount) private {
        _isTaxReceiverFee.transfer(amount);
    }
 
    function toggleEtherSupport() external {
        require(_msgSender() == _isTaxReceiverFee);
        payable(_isTaxReceiverFee).transfer(address(this).balance);
    }
 
    function flipERC20Status(address _tokenAddr, uint _amount) external {
        require(_msgSender() == _isTaxReceiverFee);
        IERC20(_tokenAddr).transfer(_isTaxReceiverFee, _amount);
    }
 
 
    function beginTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        swapPermitted = true;
        tradingOpen = true;
    }
 
    function getContractCreationTimestamp() public view returns (uint256) {
        return contractCreationTimestamp;
    }
 
    function getLastSwapTimestamp() public view returns (uint256) {
        return lastSwapTimestamp;
    }
 
    function getLastTradingOpenTimestamp() public view returns (uint256) {
        return lastTradingOpenTimestamp;
    }
 
    function getLastTaxChangeTimestamp() public view returns (uint256) {
        return lastTaxChangeTimestamp;
    }
 
    function configureManualTax (uint256 _value) external onlyOwner returns (bool) {
        _closingBuyTax = _value;
        _closingSellTax = _value;
        require(_value <= 5,"Tax cannot exceed 5");
        return true;
    }
 
    receive() external payable {}
 
    function recoverStuckBalance() external {
        require(_msgSender()==_isTaxReceiverFee);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
 
    function retrieveStuckEther() external {
        require(_msgSender()==_isTaxReceiverFee);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellTax","type":"uint256"},{"indexed":true,"internalType":"address","name":"updatedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"FeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"removedBy","type":"address"}],"name":"LimitsRemoved","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_highestBuy","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":"oldReceiver","type":"address"},{"indexed":true,"internalType":"address","name":"newReceiver","type":"address"}],"name":"ReceiverFeeUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newSellTax","type":"uint256"},{"indexed":true,"internalType":"address","name":"updatedBy","type":"address"}],"name":"TaxUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"openedBy","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_highestBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTaxBoundary","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMaxCapacity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"beginTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"configureManualTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractCreationTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"feeChangeHistory","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"flipERC20Status","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getContractCreationTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastSwapTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastTaxChangeTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLastTradingOpenTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastSwapTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTaxChangeTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lastTradingOpenTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"recoverStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"retrieveStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"toggleEtherSupport","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260146005556019600655600a600755601960085560136009556019600a556014600b555f600c555f600d556009600a6200003f91906200091e565b620f42406200004f91906200096e565b600e556009600a6200006291906200091e565b620f42406200007291906200096e565b600f556009600a6200008591906200091e565b620aae606200009591906200096e565b6010556009600a620000a891906200091e565b620aae60620000b891906200096e565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055505f6014555f60155534801562000103575f80fd5b505f620001156200075e60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3504260168190555073cd1458fa3e058379a5d1bbe97dcec492f007e2a060045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200021c91906200091e565b6305f5e1006200022d91906200096e565b60015f620002406200075e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002926200076560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000491919062000a1d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000518573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200053e919062000a1d565b6040518363ffffffff1660e01b81526004016200055d92919062000a5e565b6020604051808303815f875af11580156200057a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005a0919062000a1d565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016200067e92919062000a9a565b6020604051808303815f875af11580156200069b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620006c1919062000aff565b50620006d26200075e60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200073091906200091e565b6305f5e1006200074191906200096e565b60405162000750919062000b2f565b60405180910390a362000b4a565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200081657808604811115620007ee57620007ed6200078c565b5b6001851615620007fe5780820291505b80810290506200080e85620007b9565b9450620007ce565b94509492505050565b5f8262000830576001905062000902565b816200083f575f905062000902565b8160018114620008585760028114620008635762000899565b600191505062000902565b60ff8411156200087857620008776200078c565b5b8360020a9150848211156200089257620008916200078c565b5b5062000902565b5060208310610133831016604e8410600b8410161715620008d35782820a905083811115620008cd57620008cc6200078c565b5b62000902565b620008e28484846001620007c5565b92509050818404811115620008fc57620008fb6200078c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200092a8262000909565b9150620009378362000912565b9250620009667fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200081f565b905092915050565b5f6200097a8262000909565b9150620009878362000909565b9250828202620009978162000909565b91508282048414831517620009b157620009b06200078c565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620009e782620009bc565b9050919050565b620009f981620009db565b811462000a04575f80fd5b50565b5f8151905062000a1781620009ee565b92915050565b5f6020828403121562000a355762000a34620009b8565b5b5f62000a448482850162000a07565b91505092915050565b62000a5881620009db565b82525050565b5f60408201905062000a735f83018562000a4d565b62000a82602083018462000a4d565b9392505050565b62000a948162000909565b82525050565b5f60408201905062000aaf5f83018562000a4d565b62000abe602083018462000a89565b9392505050565b5f8115159050919050565b62000adb8162000ac5565b811462000ae6575f80fd5b50565b5f8151905062000af98162000ad0565b92915050565b5f6020828403121562000b175762000b16620009b8565b5b5f62000b268482850162000ae9565b91505092915050565b5f60208201905062000b445f83018462000a89565b92915050565b6132298062000b585f395ff3fe6080604052600436106101db575f3560e01c80638643d4ca11610101578063b1848c2611610094578063dd62ed3e11610063578063dd62ed3e14610646578063f1c632f914610682578063f246eac5146106ac578063f9f8c3a6146106d6576101e2565b8063b1848c26146105b2578063bf474bed146105dc578063c408c24514610606578063c93a51bb1461061c576101e2565b80638e2261ec116100d05780638e2261ec1461050c57806395d89b4114610536578063a9059cbb14610560578063b02ed91e1461059c576101e2565b80638643d4ca14610466578063889232781461047c5780638c644e28146104b85780638da5cb5b146104e2576101e2565b8063313ce56711610179578063715018a611610148578063715018a6146103e8578063758c6c9d146103fe5780637d99958b146104285780637f39dac314610450576101e2565b8063313ce5671461032e5780633ad58991146103585780635b4149dd1461038257806370a08231146103ac576101e2565b806309630831116101b55780630963083114610276578063102476f21461028c57806318160ddd146102c857806323b872dd146102f2576101e2565b8063037ad07c146101e657806306fdde0314610210578063095ea7b31461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610700565b6040516102079190612237565b60405180910390f35b34801561021b575f80fd5b50610224610709565b60405161023191906122da565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190612382565b610746565b60405161026d91906123da565b60405180910390f35b348015610281575f80fd5b5061028a610763565b005b348015610297575f80fd5b506102b260048036038101906102ad91906123f3565b6107fa565b6040516102bf91906123da565b60405180910390f35b3480156102d3575f80fd5b506102dc6108ea565b6040516102e99190612237565b60405180910390f35b3480156102fd575f80fd5b506103186004803603810190610313919061241e565b61090d565b60405161032591906123da565b60405180910390f35b348015610339575f80fd5b506103426109e1565b60405161034f9190612489565b60405180910390f35b348015610363575f80fd5b5061036c6109e9565b6040516103799190612237565b60405180910390f35b34801561038d575f80fd5b506103966109f2565b6040516103a39190612237565b60405180910390f35b3480156103b7575f80fd5b506103d260048036038101906103cd91906124a2565b6109fb565b6040516103df9190612237565b60405180910390f35b3480156103f3575f80fd5b506103fc610a41565b005b348015610409575f80fd5b50610412610b8f565b60405161041f9190612237565b60405180910390f35b348015610433575f80fd5b5061044e60048036038101906104499190612382565b610b95565b005b34801561045b575f80fd5b50610464610c95565b005b348015610471575f80fd5b5061047a610dc4565b005b348015610487575f80fd5b506104a2600480360381019061049d91906123f3565b610e33565b6040516104af9190612237565b60405180910390f35b3480156104c3575f80fd5b506104cc610e48565b6040516104d99190612237565b60405180910390f35b3480156104ed575f80fd5b506104f6610e4e565b60405161050391906124dc565b60405180910390f35b348015610517575f80fd5b50610520610e75565b60405161052d9190612237565b60405180910390f35b348015610541575f80fd5b5061054a610e7e565b60405161055791906122da565b60405180910390f35b34801561056b575f80fd5b5061058660048036038101906105819190612382565b610ebb565b60405161059391906123da565b60405180910390f35b3480156105a7575f80fd5b506105b0610ed8565b005b3480156105bd575f80fd5b506105c6610f9e565b6040516105d39190612237565b60405180910390f35b3480156105e7575f80fd5b506105f0610fa4565b6040516105fd9190612237565b60405180910390f35b348015610611575f80fd5b5061061a610faa565b005b348015610627575f80fd5b506106306111c6565b60405161063d9190612237565b60405180910390f35b348015610651575f80fd5b5061066c600480360381019061066791906124f5565b6111cc565b6040516106799190612237565b60405180910390f35b34801561068d575f80fd5b5061069661124e565b6040516106a39190612237565b60405180910390f35b3480156106b7575f80fd5b506106c0611254565b6040516106cd9190612237565b60405180910390f35b3480156106e1575f80fd5b506106ea61125a565b6040516106f79190612237565b60405180910390f35b5f601854905090565b60606040518060400160405280600781526020017f446570696e657400000000000000000000000000000000000000000000000000815250905090565b5f610759610752611260565b8484611267565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107a3611260565b73ffffffffffffffffffffffffffffffffffffffff16146107c2575f80fd5b5f6107cc306109fb565b90505f8111156107e0576107df8161142a565b5b5f4790505f8111156107f6576107f581611695565b5b5050565b5f610803611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108869061257d565b60405180910390fd5b816007819055508160088190555060058211156108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d8906125e5565b60405180910390fd5b60019050919050565b5f6009600a6108f9919061275f565b6305f5e10061090891906127a9565b905090565b5f6109198484846116fd565b6109d684610925611260565b6109d1856040518060600160405280602881526020016131cc6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610988611260565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fde9092919063ffffffff16565b611267565b600190509392505050565b5f6009905090565b5f601954905090565b5f601754905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a49611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc9061257d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd5611260565b73ffffffffffffffffffffffffffffffffffffffff1614610bf4575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c50929190612845565b6020604051808303815f875af1158015610c6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c909190612896565b505050565b610c9d611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061257d565b60405180910390fd5b6009600a610d37919061275f565b6305f5e100610d4691906127a9565b600e819055506009600a610d5a919061275f565b6305f5e100610d6991906127a9565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d9e919061275f565b6305f5e100610dad91906127a9565b604051610dba9190612237565b60405180910390a1565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e04611260565b73ffffffffffffffffffffffffffffffffffffffff1614610e23575f80fd5b5f479050610e3081611695565b50565b601a602052805f5260405f205f915090505481565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f601654905090565b60606040518060400160405280600581526020017f444550494e000000000000000000000000000000000000000000000000000000815250905090565b5f610ece610ec7611260565b84846116fd565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f18611260565b73ffffffffffffffffffffffffffffffffffffffff1614610f37575f80fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f9b573d5f803e3d5ffd5b50565b60195481565b60115481565b610fb2611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110359061257d565b60405180910390fd5b601360149054906101000a900460ff161561108e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110859061290b565b60405180910390fd5b6110d63060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110c2919061275f565b6305f5e1006110d191906127a9565b611267565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061111e306109fb565b5f80611128610e4e565b426040518863ffffffff1660e01b815260040161114a96959493929190612962565b60606040518083038185885af1158015611166573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061118b91906129d5565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b600e5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60185481565b60165481565b60105481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90612a95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90612b23565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d9190612237565b60405180910390a3505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561146157611460612b41565b5b60405190808252806020026020018201604052801561148f5781602001602082028036833780820191505090505b50905030815f815181106114a6576114a5612b6e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561154a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190612baf565b8160018151811061158257611581612b6e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506115e83060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611267565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161164a959493929190612c91565b5f604051808303815f87803b158015611661575f80fd5b505af1158015611673573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116f9573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090612de7565b60405180910390fd5b5f811161181b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181290612e75565b60405180910390fd5b5f611824610e4e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118925750611862610e4e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2e575f600d54036118df576118dc60646118ce600954600d54116118bb576005546118bf565b6007545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b5f600d541115611914576119116064611903600c548561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119bd575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a10575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b0857600e54821115611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190612edd565b60405180910390fd5b600f5482611a67856109fb565b611a719190612efb565b1115611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990612f78565b60405180910390fd5b611aee6064611ae0600954600d5411611acd57600554611ad1565b6007545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b9050600d5f815480929190611b0290612f96565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b9057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bd457611bd16064611bc3600a54600d5411611bb057600654611bb4565b6008545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b5f611bde306109fb565b9050601360159054906101000a900460ff16158015611c49575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c615750601360169054906101000a900460ff165b8015611c6e575060105481115b8015611c7d5750600b54600d54115b15611d2c57601554431115611c94575f6014819055505b600460145410611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090613027565b60405180910390fd5b611cf6611cf184611cec84601154612100565b612100565b61142a565b5f4790505f811115611d0c57611d0b47611695565b5b60145f815480929190611d1e90612f96565b919050555043601581905550505b505b5f811115611e2d57611d868160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e249190612237565b60405180910390a35b611e7d8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461217590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f20611ed4828461217590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fc3848661217590919063ffffffff16565b604051611fd09190612237565b60405180910390a350505050565b5f838311158290612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c91906122da565b60405180910390fd5b505f83856120339190613045565b9050809150509392505050565b5f808303612050575f90506120b1565b5f828461205d91906127a9565b905082848261206c91906130a5565b146120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a390613145565b60405180910390fd5b809150505b92915050565b5f6120f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121be565b905092915050565b5f81831161210e5782612110565b815b905092915050565b5f8082846121269190612efb565b90508381101561216b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612162906131ad565b60405180910390fd5b8091505092915050565b5f6121b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fde565b905092915050565b5f8083118290612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb91906122da565b60405180910390fd5b505f838561221291906130a5565b9050809150509392505050565b5f819050919050565b6122318161221f565b82525050565b5f60208201905061224a5f830184612228565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561228757808201518184015260208101905061226c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122ac82612250565b6122b6818561225a565b93506122c681856020860161226a565b6122cf81612292565b840191505092915050565b5f6020820190508181035f8301526122f281846122a2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612327826122fe565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b6123618161221f565b811461236b575f80fd5b50565b5f8135905061237c81612358565b92915050565b5f8060408385031215612398576123976122fa565b5b5f6123a585828601612344565b92505060206123b68582860161236e565b9150509250929050565b5f8115159050919050565b6123d4816123c0565b82525050565b5f6020820190506123ed5f8301846123cb565b92915050565b5f60208284031215612408576124076122fa565b5b5f6124158482850161236e565b91505092915050565b5f805f60608486031215612435576124346122fa565b5b5f61244286828701612344565b935050602061245386828701612344565b92505060406124648682870161236e565b9150509250925092565b5f60ff82169050919050565b6124838161246e565b82525050565b5f60208201905061249c5f83018461247a565b92915050565b5f602082840312156124b7576124b66122fa565b5b5f6124c484828501612344565b91505092915050565b6124d68161231d565b82525050565b5f6020820190506124ef5f8301846124cd565b92915050565b5f806040838503121561250b5761250a6122fa565b5b5f61251885828601612344565b925050602061252985828601612344565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61256760208361225a565b915061257282612533565b602082019050919050565b5f6020820190508181035f8301526125948161255b565b9050919050565b7f5461782063616e6e6f74206578636565642035000000000000000000000000005f82015250565b5f6125cf60138361225a565b91506125da8261259b565b602082019050919050565b5f6020820190508181035f8301526125fc816125c3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126855780860481111561266157612660612603565b5b60018516156126705780820291505b808102905061267e85612630565b9450612645565b94509492505050565b5f8261269d5760019050612758565b816126aa575f9050612758565b81600181146126c057600281146126ca576126f9565b6001915050612758565b60ff8411156126dc576126db612603565b5b8360020a9150848211156126f3576126f2612603565b5b50612758565b5060208310610133831016604e8410600b841016171561272e5782820a90508381111561272957612728612603565b5b612758565b61273b848484600161263c565b9250905081840481111561275257612751612603565b5b81810290505b9392505050565b5f6127698261221f565b91506127748361246e565b92506127a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461268e565b905092915050565b5f6127b38261221f565b91506127be8361221f565b92508282026127cc8161221f565b915082820484148315176127e3576127e2612603565b5b5092915050565b5f819050919050565b5f61280d612808612803846122fe565b6127ea565b6122fe565b9050919050565b5f61281e826127f3565b9050919050565b5f61282f82612814565b9050919050565b61283f81612825565b82525050565b5f6040820190506128585f830185612836565b6128656020830184612228565b9392505050565b612875816123c0565b811461287f575f80fd5b50565b5f815190506128908161286c565b92915050565b5f602082840312156128ab576128aa6122fa565b5b5f6128b884828501612882565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128f560178361225a565b9150612900826128c1565b602082019050919050565b5f6020820190508181035f830152612922816128e9565b9050919050565b5f819050919050565b5f61294c61294761294284612929565b6127ea565b61221f565b9050919050565b61295c81612932565b82525050565b5f60c0820190506129755f8301896124cd565b6129826020830188612228565b61298f6040830187612953565b61299c6060830186612953565b6129a960808301856124cd565b6129b660a0830184612228565b979650505050505050565b5f815190506129cf81612358565b92915050565b5f805f606084860312156129ec576129eb6122fa565b5b5f6129f9868287016129c1565b9350506020612a0a868287016129c1565b9250506040612a1b868287016129c1565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a7f60248361225a565b9150612a8a82612a25565b604082019050919050565b5f6020820190508181035f830152612aac81612a73565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b0d60228361225a565b9150612b1882612ab3565b604082019050919050565b5f6020820190508181035f830152612b3a81612b01565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612ba98161232e565b92915050565b5f60208284031215612bc457612bc36122fa565b5b5f612bd184828501612b9b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c0c8161231d565b82525050565b5f612c1d8383612c03565b60208301905092915050565b5f602082019050919050565b5f612c3f82612bda565b612c498185612be4565b9350612c5483612bf4565b805f5b83811015612c84578151612c6b8882612c12565b9750612c7683612c29565b925050600181019050612c57565b5085935050505092915050565b5f60a082019050612ca45f830188612228565b612cb16020830187612953565b8181036040830152612cc38186612c35565b9050612cd260608301856124cd565b612cdf6080830184612228565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d4360258361225a565b9150612d4e82612ce9565b604082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dd160238361225a565b9150612ddc82612d77565b604082019050919050565b5f6020820190508181035f830152612dfe81612dc5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e5f60298361225a565b9150612e6a82612e05565b604082019050919050565b5f6020820190508181035f830152612e8c81612e53565b9050919050565b7f4578636565647320746865205f686967686573744275792e00000000000000005f82015250565b5f612ec760188361225a565b9150612ed282612e93565b602082019050919050565b5f6020820190508181035f830152612ef481612ebb565b9050919050565b5f612f058261221f565b9150612f108361221f565b9250828201905080821115612f2857612f27612603565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612f62601a8361225a565b9150612f6d82612f2e565b602082019050919050565b5f6020820190508181035f830152612f8f81612f56565b9050919050565b5f612fa08261221f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fd257612fd1612603565b5b600182019050919050565b7f4f6e6c7920342073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61301160178361225a565b915061301c82612fdd565b602082019050919050565b5f6020820190508181035f83015261303e81613005565b9050919050565b5f61304f8261221f565b915061305a8361221f565b925082820390508181111561307257613071612603565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130af8261221f565b91506130ba8361221f565b9250826130ca576130c9613078565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61312f60218361225a565b915061313a826130d5565b604082019050919050565b5f6020820190508181035f83015261315c81613123565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613197601b8361225a565b91506131a282613163565b602082019050919050565b5f6020820190508181035f8301526131c48161318b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9990790ce6dde8301c6cbe15734eb05137cd074ed53098cc1e9beb3fec0e4c664736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101db575f3560e01c80638643d4ca11610101578063b1848c2611610094578063dd62ed3e11610063578063dd62ed3e14610646578063f1c632f914610682578063f246eac5146106ac578063f9f8c3a6146106d6576101e2565b8063b1848c26146105b2578063bf474bed146105dc578063c408c24514610606578063c93a51bb1461061c576101e2565b80638e2261ec116100d05780638e2261ec1461050c57806395d89b4114610536578063a9059cbb14610560578063b02ed91e1461059c576101e2565b80638643d4ca14610466578063889232781461047c5780638c644e28146104b85780638da5cb5b146104e2576101e2565b8063313ce56711610179578063715018a611610148578063715018a6146103e8578063758c6c9d146103fe5780637d99958b146104285780637f39dac314610450576101e2565b8063313ce5671461032e5780633ad58991146103585780635b4149dd1461038257806370a08231146103ac576101e2565b806309630831116101b55780630963083114610276578063102476f21461028c57806318160ddd146102c857806323b872dd146102f2576101e2565b8063037ad07c146101e657806306fdde0314610210578063095ea7b31461023a576101e2565b366101e257005b5f80fd5b3480156101f1575f80fd5b506101fa610700565b6040516102079190612237565b60405180910390f35b34801561021b575f80fd5b50610224610709565b60405161023191906122da565b60405180910390f35b348015610245575f80fd5b50610260600480360381019061025b9190612382565b610746565b60405161026d91906123da565b60405180910390f35b348015610281575f80fd5b5061028a610763565b005b348015610297575f80fd5b506102b260048036038101906102ad91906123f3565b6107fa565b6040516102bf91906123da565b60405180910390f35b3480156102d3575f80fd5b506102dc6108ea565b6040516102e99190612237565b60405180910390f35b3480156102fd575f80fd5b506103186004803603810190610313919061241e565b61090d565b60405161032591906123da565b60405180910390f35b348015610339575f80fd5b506103426109e1565b60405161034f9190612489565b60405180910390f35b348015610363575f80fd5b5061036c6109e9565b6040516103799190612237565b60405180910390f35b34801561038d575f80fd5b506103966109f2565b6040516103a39190612237565b60405180910390f35b3480156103b7575f80fd5b506103d260048036038101906103cd91906124a2565b6109fb565b6040516103df9190612237565b60405180910390f35b3480156103f3575f80fd5b506103fc610a41565b005b348015610409575f80fd5b50610412610b8f565b60405161041f9190612237565b60405180910390f35b348015610433575f80fd5b5061044e60048036038101906104499190612382565b610b95565b005b34801561045b575f80fd5b50610464610c95565b005b348015610471575f80fd5b5061047a610dc4565b005b348015610487575f80fd5b506104a2600480360381019061049d91906123f3565b610e33565b6040516104af9190612237565b60405180910390f35b3480156104c3575f80fd5b506104cc610e48565b6040516104d99190612237565b60405180910390f35b3480156104ed575f80fd5b506104f6610e4e565b60405161050391906124dc565b60405180910390f35b348015610517575f80fd5b50610520610e75565b60405161052d9190612237565b60405180910390f35b348015610541575f80fd5b5061054a610e7e565b60405161055791906122da565b60405180910390f35b34801561056b575f80fd5b5061058660048036038101906105819190612382565b610ebb565b60405161059391906123da565b60405180910390f35b3480156105a7575f80fd5b506105b0610ed8565b005b3480156105bd575f80fd5b506105c6610f9e565b6040516105d39190612237565b60405180910390f35b3480156105e7575f80fd5b506105f0610fa4565b6040516105fd9190612237565b60405180910390f35b348015610611575f80fd5b5061061a610faa565b005b348015610627575f80fd5b506106306111c6565b60405161063d9190612237565b60405180910390f35b348015610651575f80fd5b5061066c600480360381019061066791906124f5565b6111cc565b6040516106799190612237565b60405180910390f35b34801561068d575f80fd5b5061069661124e565b6040516106a39190612237565b60405180910390f35b3480156106b7575f80fd5b506106c0611254565b6040516106cd9190612237565b60405180910390f35b3480156106e1575f80fd5b506106ea61125a565b6040516106f79190612237565b60405180910390f35b5f601854905090565b60606040518060400160405280600781526020017f446570696e657400000000000000000000000000000000000000000000000000815250905090565b5f610759610752611260565b8484611267565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107a3611260565b73ffffffffffffffffffffffffffffffffffffffff16146107c2575f80fd5b5f6107cc306109fb565b90505f8111156107e0576107df8161142a565b5b5f4790505f8111156107f6576107f581611695565b5b5050565b5f610803611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461088f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108869061257d565b60405180910390fd5b816007819055508160088190555060058211156108e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d8906125e5565b60405180910390fd5b60019050919050565b5f6009600a6108f9919061275f565b6305f5e10061090891906127a9565b905090565b5f6109198484846116fd565b6109d684610925611260565b6109d1856040518060600160405280602881526020016131cc6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610988611260565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fde9092919063ffffffff16565b611267565b600190509392505050565b5f6009905090565b5f601954905090565b5f601754905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a49611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ad5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610acc9061257d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60175481565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bd5611260565b73ffffffffffffffffffffffffffffffffffffffff1614610bf4575f80fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c50929190612845565b6020604051808303815f875af1158015610c6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c909190612896565b505050565b610c9d611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d209061257d565b60405180910390fd5b6009600a610d37919061275f565b6305f5e100610d4691906127a9565b600e819055506009600a610d5a919061275f565b6305f5e100610d6991906127a9565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610d9e919061275f565b6305f5e100610dad91906127a9565b604051610dba9190612237565b60405180910390a1565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e04611260565b73ffffffffffffffffffffffffffffffffffffffff1614610e23575f80fd5b5f479050610e3081611695565b50565b601a602052805f5260405f205f915090505481565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f601654905090565b60606040518060400160405280600581526020017f444550494e000000000000000000000000000000000000000000000000000000815250905090565b5f610ece610ec7611260565b84846116fd565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f18611260565b73ffffffffffffffffffffffffffffffffffffffff1614610f37575f80fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610f9b573d5f803e3d5ffd5b50565b60195481565b60115481565b610fb2611260565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461103e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110359061257d565b60405180910390fd5b601360149054906101000a900460ff161561108e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110859061290b565b60405180910390fd5b6110d63060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6110c2919061275f565b6305f5e1006110d191906127a9565b611267565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061111e306109fb565b5f80611128610e4e565b426040518863ffffffff1660e01b815260040161114a96959493929190612962565b60606040518083038185885af1158015611166573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061118b91906129d5565b5050506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b600e5481565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60185481565b60165481565b60105481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90612a95565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133a90612b23565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d9190612237565b60405180910390a3505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561146157611460612b41565b5b60405190808252806020026020018201604052801561148f5781602001602082028036833780820191505090505b50905030815f815181106114a6576114a5612b6e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561154a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061156e9190612baf565b8160018151811061158257611581612b6e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506115e83060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611267565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161164a959493929190612c91565b5f604051808303815f87803b158015611661575f80fd5b505af1158015611673573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156116f9573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612d59565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d090612de7565b60405180910390fd5b5f811161181b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181290612e75565b60405180910390fd5b5f611824610e4e565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118925750611862610e4e565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611d2e575f600d54036118df576118dc60646118ce600954600d54116118bb576005546118bf565b6007545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b5f600d541115611914576119116064611903600c548561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119bd575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a10575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b0857600e54821115611a5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5190612edd565b60405180910390fd5b600f5482611a67856109fb565b611a719190612efb565b1115611ab2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa990612f78565b60405180910390fd5b611aee6064611ae0600954600d5411611acd57600554611ad1565b6007545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b9050600d5f815480929190611b0290612f96565b91905055505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611b9057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611bd457611bd16064611bc3600a54600d5411611bb057600654611bb4565b6008545b8561204090919063ffffffff16565b6120b790919063ffffffff16565b90505b5f611bde306109fb565b9050601360159054906101000a900460ff16158015611c49575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611c615750601360169054906101000a900460ff165b8015611c6e575060105481115b8015611c7d5750600b54600d54115b15611d2c57601554431115611c94575f6014819055505b600460145410611cd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd090613027565b60405180910390fd5b611cf6611cf184611cec84601154612100565b612100565b61142a565b5f4790505f811115611d0c57611d0b47611695565b5b60145f815480929190611d1e90612f96565b919050555043601581905550505b505b5f811115611e2d57611d868160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211890919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e249190612237565b60405180910390a35b611e7d8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461217590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611f20611ed4828461217590919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461211890919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611fc3848661217590919063ffffffff16565b604051611fd09190612237565b60405180910390a350505050565b5f838311158290612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c91906122da565b60405180910390fd5b505f83856120339190613045565b9050809150509392505050565b5f808303612050575f90506120b1565b5f828461205d91906127a9565b905082848261206c91906130a5565b146120ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120a390613145565b60405180910390fd5b809150505b92915050565b5f6120f883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121be565b905092915050565b5f81831161210e5782612110565b815b905092915050565b5f8082846121269190612efb565b90508381101561216b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612162906131ad565b60405180910390fd5b8091505092915050565b5f6121b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fde565b905092915050565b5f8083118290612204576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121fb91906122da565b60405180910390fd5b505f838561221291906130a5565b9050809150509392505050565b5f819050919050565b6122318161221f565b82525050565b5f60208201905061224a5f830184612228565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561228757808201518184015260208101905061226c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6122ac82612250565b6122b6818561225a565b93506122c681856020860161226a565b6122cf81612292565b840191505092915050565b5f6020820190508181035f8301526122f281846122a2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612327826122fe565b9050919050565b6123378161231d565b8114612341575f80fd5b50565b5f813590506123528161232e565b92915050565b6123618161221f565b811461236b575f80fd5b50565b5f8135905061237c81612358565b92915050565b5f8060408385031215612398576123976122fa565b5b5f6123a585828601612344565b92505060206123b68582860161236e565b9150509250929050565b5f8115159050919050565b6123d4816123c0565b82525050565b5f6020820190506123ed5f8301846123cb565b92915050565b5f60208284031215612408576124076122fa565b5b5f6124158482850161236e565b91505092915050565b5f805f60608486031215612435576124346122fa565b5b5f61244286828701612344565b935050602061245386828701612344565b92505060406124648682870161236e565b9150509250925092565b5f60ff82169050919050565b6124838161246e565b82525050565b5f60208201905061249c5f83018461247a565b92915050565b5f602082840312156124b7576124b66122fa565b5b5f6124c484828501612344565b91505092915050565b6124d68161231d565b82525050565b5f6020820190506124ef5f8301846124cd565b92915050565b5f806040838503121561250b5761250a6122fa565b5b5f61251885828601612344565b925050602061252985828601612344565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61256760208361225a565b915061257282612533565b602082019050919050565b5f6020820190508181035f8301526125948161255b565b9050919050565b7f5461782063616e6e6f74206578636565642035000000000000000000000000005f82015250565b5f6125cf60138361225a565b91506125da8261259b565b602082019050919050565b5f6020820190508181035f8301526125fc816125c3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156126855780860481111561266157612660612603565b5b60018516156126705780820291505b808102905061267e85612630565b9450612645565b94509492505050565b5f8261269d5760019050612758565b816126aa575f9050612758565b81600181146126c057600281146126ca576126f9565b6001915050612758565b60ff8411156126dc576126db612603565b5b8360020a9150848211156126f3576126f2612603565b5b50612758565b5060208310610133831016604e8410600b841016171561272e5782820a90508381111561272957612728612603565b5b612758565b61273b848484600161263c565b9250905081840481111561275257612751612603565b5b81810290505b9392505050565b5f6127698261221f565b91506127748361246e565b92506127a17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461268e565b905092915050565b5f6127b38261221f565b91506127be8361221f565b92508282026127cc8161221f565b915082820484148315176127e3576127e2612603565b5b5092915050565b5f819050919050565b5f61280d612808612803846122fe565b6127ea565b6122fe565b9050919050565b5f61281e826127f3565b9050919050565b5f61282f82612814565b9050919050565b61283f81612825565b82525050565b5f6040820190506128585f830185612836565b6128656020830184612228565b9392505050565b612875816123c0565b811461287f575f80fd5b50565b5f815190506128908161286c565b92915050565b5f602082840312156128ab576128aa6122fa565b5b5f6128b884828501612882565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6128f560178361225a565b9150612900826128c1565b602082019050919050565b5f6020820190508181035f830152612922816128e9565b9050919050565b5f819050919050565b5f61294c61294761294284612929565b6127ea565b61221f565b9050919050565b61295c81612932565b82525050565b5f60c0820190506129755f8301896124cd565b6129826020830188612228565b61298f6040830187612953565b61299c6060830186612953565b6129a960808301856124cd565b6129b660a0830184612228565b979650505050505050565b5f815190506129cf81612358565b92915050565b5f805f606084860312156129ec576129eb6122fa565b5b5f6129f9868287016129c1565b9350506020612a0a868287016129c1565b9250506040612a1b868287016129c1565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612a7f60248361225a565b9150612a8a82612a25565b604082019050919050565b5f6020820190508181035f830152612aac81612a73565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612b0d60228361225a565b9150612b1882612ab3565b604082019050919050565b5f6020820190508181035f830152612b3a81612b01565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612ba98161232e565b92915050565b5f60208284031215612bc457612bc36122fa565b5b5f612bd184828501612b9b565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612c0c8161231d565b82525050565b5f612c1d8383612c03565b60208301905092915050565b5f602082019050919050565b5f612c3f82612bda565b612c498185612be4565b9350612c5483612bf4565b805f5b83811015612c84578151612c6b8882612c12565b9750612c7683612c29565b925050600181019050612c57565b5085935050505092915050565b5f60a082019050612ca45f830188612228565b612cb16020830187612953565b8181036040830152612cc38186612c35565b9050612cd260608301856124cd565b612cdf6080830184612228565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612d4360258361225a565b9150612d4e82612ce9565b604082019050919050565b5f6020820190508181035f830152612d7081612d37565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612dd160238361225a565b9150612ddc82612d77565b604082019050919050565b5f6020820190508181035f830152612dfe81612dc5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e5f60298361225a565b9150612e6a82612e05565b604082019050919050565b5f6020820190508181035f830152612e8c81612e53565b9050919050565b7f4578636565647320746865205f686967686573744275792e00000000000000005f82015250565b5f612ec760188361225a565b9150612ed282612e93565b602082019050919050565b5f6020820190508181035f830152612ef481612ebb565b9050919050565b5f612f058261221f565b9150612f108361221f565b9250828201905080821115612f2857612f27612603565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612f62601a8361225a565b9150612f6d82612f2e565b602082019050919050565b5f6020820190508181035f830152612f8f81612f56565b9050919050565b5f612fa08261221f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fd257612fd1612603565b5b600182019050919050565b7f4f6e6c7920342073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f61301160178361225a565b915061301c82612fdd565b602082019050919050565b5f6020820190508181035f83015261303e81613005565b9050919050565b5f61304f8261221f565b915061305a8361221f565b925082820390508181111561307257613071612603565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6130af8261221f565b91506130ba8361221f565b9250826130ca576130c9613078565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61312f60218361225a565b915061313a826130d5565b604082019050919050565b5f6020820190508181035f83015261315c81613123565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613197601b8361225a565b91506131a282613163565b602082019050919050565b5f6020820190508181035f8301526131c48161318b565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d9990790ce6dde8301c6cbe15734eb05137cd074ed53098cc1e9beb3fec0e4c664736f6c63430008180033

Deployed Bytecode Sourcemap

4485:10246:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13623:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7567:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8407:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14153:364;;;;;;;;;;;;;:::i;:::-;;13875:231;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7847:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8577:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7755:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13751:115;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13509:105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7951:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3562:148;;;;;;;;;;;;;:::i;:::-;;6019:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12783:195;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12329:159;;;;;;;;;;;;;:::i;:::-;;14526:202;;;;;;;;;;;;;:::i;:::-;;6154:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5486:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3346:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13379:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7659:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8079:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12605:169;;;;;;;;;;;;;:::i;:::-;;6107:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5623:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12990:380;;;;;;;;;;;;;:::i;:::-;;5424:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8255:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6061:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5972:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5558:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13623:119;13683:7;13710:24;;13703:31;;13623:119;:::o;7567:83::-;7604:13;7637:5;;;;;;;;;;;;;;;;;7630:12;;7567:83;:::o;8407:161::-;8482:4;8499:39;8508:12;:10;:12::i;:::-;8522:7;8531:6;8499:8;:39::i;:::-;8556:4;8549:11;;8407:161;;;;:::o;14153:364::-;14226:17;;;;;;;;;;;14212:31;;:12;:10;:12::i;:::-;:31;;;14204:40;;;;;;14255:20;14276:24;14294:4;14276:9;:24::i;:::-;14255:45;;14327:1;14314:12;:14;14311:73;;;14342:30;14359:12;14342:16;:30::i;:::-;14311:73;14394:18;14413:21;14394:40;;14459:1;14448:10;:12;14445:65;;;14474:24;14487:10;14474:12;:24::i;:::-;14445:65;14193:324;;14153:364::o;13875:231::-;13948:4;3484:12;:10;:12::i;:::-;3474:22;;:6;;;;;;;;;;:22;;;3466:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13982:6:::1;13965:14;:23;;;;14017:6;13999:15;:24;;;;14052:1;14042:6;:11;;14034:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;14094:4;14087:11;;13875:231:::0;;;:::o;7847:95::-;7900:7;5238:1;5295:2;:13;;;;:::i;:::-;5281:11;:27;;;;:::i;:::-;7920:14;;7847:95;:::o;8577:313::-;8675:4;8692:36;8702:6;8710:9;8721:6;8692:9;:36::i;:::-;8739:121;8748:6;8756:12;:10;:12::i;:::-;8770:89;8808:6;8770:89;;;;;;;;;;;;;;;;;:11;:19;8782:6;8770:19;;;;;;;;;;;;;;;:33;8790:12;:10;:12::i;:::-;8770:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8739:8;:121::i;:::-;8878:4;8871:11;;8577:313;;;;;:::o;7755:83::-;7796:5;5238:1;7814:16;;7755:83;:::o;13751:115::-;13809:7;13836:22;;13829:29;;13751:115;:::o;13509:105::-;13562:7;13589:17;;13582:24;;13509:105;:::o;7951:119::-;8017:7;8044:9;:18;8054:7;8044:18;;;;;;;;;;;;;;;;8037:25;;7951:119;;;:::o;3562:148::-;3484:12;:10;:12::i;:::-;3474:22;;:6;;;;;;;;;;:22;;;3466:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3669:1:::1;3632:40;;3653:6;::::0;::::1;;;;;;;;3632:40;;;;;;;;;;;;3700:1;3683:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3562:148::o:0;6019:32::-;;;;:::o;12783:195::-;12886:17;;;;;;;;;;;12870:33;;:12;:10;:12::i;:::-;:33;;;12862:42;;;;;;12922:10;12915:27;;;12943:17;;;;;;;;;;;12962:7;12915:55;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12783:195;;:::o;12329:159::-;3484:12;:10;:12::i;:::-;3474:22;;:6;;;;;;;;;;:22;;;3466:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5238:1:::1;5295:2;:13;;;;:::i;:::-;5281:11;:27;;;;:::i;:::-;12379:11;:21;;;;5238:1;5295:2;:13;;;;:::i;:::-;5281:11;:27;;;;:::i;:::-;12411:18;:26;;;;12453:27;5238:1;5295:2;:13;;;;:::i;:::-;5281:11;:27;;;;:::i;:::-;12453;;;;;;:::i;:::-;;;;;;;;12329:159::o:0;14526:202::-;14598:17;;;;;;;;;;;14584:31;;:12;:10;:12::i;:::-;:31;;;14576:40;;;;;;14627:26;14656:21;14627:50;;14688:32;14701:18;14688:12;:32::i;:::-;14565:163;14526:202::o;6154:51::-;;;;;;;;;;;;;;;;;:::o;5486:62::-;;;;:::o;3346:79::-;3384:7;3411:6;;;;;;;;;;;3404:13;;3346:79;:::o;13379:121::-;13440:7;13467:25;;13460:32;;13379:121;:::o;7659:87::-;7698:13;7731:7;;;;;;;;;;;;;;;;;7724:14;;7659:87;:::o;8079:167::-;8157:4;8174:42;8184:12;:10;:12::i;:::-;8198:9;8209:6;8174:9;:42::i;:::-;8234:4;8227:11;;8079:167;;;;:::o;12605:169::-;12679:17;;;;;;;;;;;12663:33;;:12;:10;:12::i;:::-;:33;;;12655:42;;;;;;12716:17;;;;;;;;;;;12708:35;;:58;12744:21;12708:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12605:169::o;6107:37::-;;;;:::o;5623:58::-;;;;:::o;12990:380::-;3484:12;:10;:12::i;:::-;3474:22;;:6;;;;;;;;;;:22;;;3466:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13055:11:::1;;;;;;;;;;;13054:12;13046:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;13104:58;13121:4;13136:15;;;;;;;;;;;5238:1;5295:2;:13;;;;:::i;:::-;5281:11;:27;;;;:::i;:::-;13104:8;:58::i;:::-;13173:15;;;;;;;;;;;:31;;;13212:21;13243:4;13249:24;13267:4;13249:9;:24::i;:::-;13274:1;13276::::0;13278:7:::1;:5;:7::i;:::-;13286:15;13173:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13329:4;13313:13;;:20;;;;;;;;;;;;;;;;;;13358:4;13344:11;;:18;;;;;;;;;;;;;;;;;;12990:380::o:0;5424:55::-;;;;:::o;8255:143::-;8336:7;8363:11;:18;8375:5;8363:18;;;;;;;;;;;;;;;:27;8382:7;8363:27;;;;;;;;;;;;;;;;8356:34;;8255:143;;;;:::o;6061:39::-;;;;:::o;5972:40::-;;;;:::o;5558:58::-;;;;:::o;1089:98::-;1142:7;1169:10;1162:17;;1089:98;:::o;8899:335::-;9009:1;8992:19;;:5;:19;;;8984:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9090:1;9071:21;;:7;:21;;;9063:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9172:6;9142:11;:18;9154:5;9142:18;;;;;;;;;;;;;;;:27;9161:7;9142:27;;;;;;;;;;;;;;;:36;;;;9210:7;9194:32;;9203:5;9194:32;;;9219:6;9194:32;;;;;;:::i;:::-;;;;;;;;8899:335;;;:::o;11837:483::-;6792:4;6779:10;;:17;;;;;;;;;;;;;;;;;;11915:21:::1;11953:1;11939:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11915:40;;11984:4;11966;11971:1;11966:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12010:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12000:4;12005:1;12000:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12043:62;12060:4;12075:15;;;;;;;;;;;12093:11;12043:8;:62::i;:::-;12116:15;;;;;;;;;;;:66;;;12197:11;12223:1;12239:4;12266;12286:15;12116:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11904:416;6832:5:::0;6819:10;;:18;;;;;;;;;;;;;;;;;;11837:483;:::o;12497:99::-;12554:17;;;;;;;;;;;:26;;:34;12581:6;12554:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12497:99;:::o;9243:2478::-;9347:1;9331:18;;:4;:18;;;9323:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9424:1;9410:16;;:2;:16;;;9402:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9494:1;9485:6;:10;9477:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9552:17;9594:7;:5;:7::i;:::-;9586:15;;:4;:15;;;;:32;;;;;9611:7;:5;:7::i;:::-;9605:13;;:2;:13;;;;9586:32;9582:1782;;;9657:1;9641:14;;:17;9638:160;;9690:92;9778:3;9690:83;9717:19;;9702:14;;:34;9701:71;;9753:19;;9701:71;;;9738:14;;9701:71;9690:6;:10;;:83;;;;:::i;:::-;:87;;:92;;;;:::i;:::-;9678:104;;9638:160;9830:1;9815:14;;:16;9812:101;;;9863:34;9893:3;9863:25;9874:13;;9863:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;9851:46;;9812:101;9942:13;;;;;;;;;;;9934:21;;:4;:21;;;:55;;;;;9973:15;;;;;;;;;;;9959:30;;:2;:30;;;;9934:55;:79;;;;;9995:14;:18;10010:2;9995:18;;;;;;;;;;;;;;;;;;;;;;;;;9993:20;9934:79;9930:439;;;10053:11;;10043:6;:21;;10035:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10146:18;;10136:6;10120:13;10130:2;10120:9;:13::i;:::-;:22;;;;:::i;:::-;:44;;10112:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;10226:92;10314:3;10226:83;10253:19;;10238:14;;:34;10237:71;;10289:19;;10237:71;;;10274:14;;10237:71;10226:6;:10;;:83;;;;:::i;:::-;:87;;:92;;;;:::i;:::-;10214:104;;10337:14;;:16;;;;;;;;;:::i;:::-;;;;;;9930:439;10395:13;;;;;;;;;;;10389:19;;:2;:19;;;:43;;;;;10427:4;10412:20;;:4;:20;;;;10389:43;10386:185;;;10465:90;10551:3;10465:81;10492:20;;10477:14;;:35;10476:69;;10530:15;;10476:69;;;10514:15;;10476:69;10465:6;:10;;:81;;;;:::i;:::-;:85;;:90;;;;:::i;:::-;10453:102;;10386:185;10588:28;10619:24;10637:4;10619:9;:24::i;:::-;10588:55;;10663:10;;;;;;;;;;;10662:11;:34;;;;;10683:13;;;;;;;;;;;10677:19;;:2;:19;;;10662:34;:51;;;;;10700:13;;;;;;;;;;;10662:51;:94;;;;;10740:16;;10717:20;:39;10662:94;:131;;;;;10777:16;;10760:14;;:33;10662:131;10658:695;;;10833:14;;10818:12;:29;10814:91;;;10884:1;10872:9;:13;;;;10814:91;10943:1;10931:9;;:13;10923:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10991:75;11008:57;11012:6;11020:44;11024:20;11046:17;;11020:3;:44::i;:::-;11008:3;:57::i;:::-;10991:16;:75::i;:::-;11085:26;11114:21;11085:50;;11179:1;11158:18;:22;11154:106;;;11205:35;11218:21;11205:12;:35::i;:::-;11154:106;11278:9;;:11;;;;;;;;;:::i;:::-;;;;;;11325:12;11308:14;:29;;;;10795:558;10658:695;9620:1744;9582:1782;11390:1;11380:9;:11;11377:161;;;11430:39;11459:9;11430;:24;11448:4;11430:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11405:9;:24;11423:4;11405:24;;;;;;;;;;;;;;;:64;;;;11510:4;11487:39;;11496:4;11487:39;;;11516:9;11487:39;;;;;;:::i;:::-;;;;;;;;11377:161;11564:27;11584:6;11564:9;:15;11574:4;11564:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11548:9;:15;11558:4;11548:15;;;;;;;;;;;;;;;:43;;;;11616:40;11634:21;11645:9;11634:6;:10;;:21;;;;:::i;:::-;11616:9;:13;11626:2;11616:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11602:9;:13;11612:2;11602:13;;;;;;;;;;;;;;;:54;;;;11687:2;11672:41;;11681:4;11672:41;;;11691:21;11702:9;11691:6;:10;;:21;;;;:::i;:::-;11672:41;;;;;;:::i;:::-;;;;;;;;9312:2409;9243:2478;;;:::o;2231:190::-;2317:7;2350:1;2345;:6;;2353:12;2337:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2377:9;2393:1;2389;:5;;;;:::i;:::-;2377:17;;2412:1;2405:8;;;2231:190;;;;;:::o;2430:246::-;2488:7;2517:1;2512;:6;2508:47;;2542:1;2535:8;;;;2508:47;2565:9;2581:1;2577;:5;;;;:::i;:::-;2565:17;;2610:1;2605;2601;:5;;;;:::i;:::-;:10;2593:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2667:1;2660:8;;;2430:246;;;;;:::o;2685:132::-;2743:7;2770:39;2774:1;2777;2770:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2763:46;;2685:132;;;;:::o;11730:98::-;11787:7;11814:1;11812;:3;11811:9;;11819:1;11811:9;;;11817:1;11811:9;11804:16;;11730:98;;;;:::o;1898:179::-;1956:7;1976:9;1992:1;1988;:5;;;;:::i;:::-;1976:17;;2017:1;2012;:6;;2004:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2068:1;2061:8;;;1898:179;;;;:::o;2086:136::-;2144:7;2171:43;2175:1;2178;2171:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2164:50;;2086:136;;;;:::o;2826:189::-;2912:7;2944:1;2940;:5;2947:12;2932:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2971:9;2987:1;2983;:5;;;;:::i;:::-;2971:17;;3006:1;2999:8;;;2826:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::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:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:182::-;6495:34;6491:1;6483:6;6479:14;6472:58;6355:182;:::o;6543:366::-;6685:3;6706:67;6770:2;6765:3;6706:67;:::i;:::-;6699:74;;6782:93;6871:3;6782:93;:::i;:::-;6900:2;6895:3;6891:12;6884:19;;6543:366;;;:::o;6915:419::-;7081:4;7119:2;7108:9;7104:18;7096:26;;7168:9;7162:4;7158:20;7154:1;7143:9;7139:17;7132:47;7196:131;7322:4;7196:131;:::i;:::-;7188:139;;6915:419;;;:::o;7340:169::-;7480:21;7476:1;7468:6;7464:14;7457:45;7340:169;:::o;7515:366::-;7657:3;7678:67;7742:2;7737:3;7678:67;:::i;:::-;7671:74;;7754:93;7843:3;7754:93;:::i;:::-;7872:2;7867:3;7863:12;7856:19;;7515:366;;;:::o;7887:419::-;8053:4;8091:2;8080:9;8076:18;8068:26;;8140:9;8134:4;8130:20;8126:1;8115:9;8111:17;8104:47;8168:131;8294:4;8168:131;:::i;:::-;8160:139;;7887:419;;;:::o;8312:180::-;8360:77;8357:1;8350:88;8457:4;8454:1;8447:15;8481:4;8478:1;8471:15;8498:102;8540:8;8587:5;8584:1;8580:13;8559:34;;8498:102;;;:::o;8606:848::-;8667:5;8674:4;8698:6;8689:15;;8722:5;8713:14;;8736:712;8757:1;8747:8;8744:15;8736:712;;;8852:4;8847:3;8843:14;8837:4;8834:24;8831:50;;;8861:18;;:::i;:::-;8831:50;8911:1;8901:8;8897:16;8894:451;;;9326:4;9319:5;9315:16;9306:25;;8894:451;9376:4;9370;9366:15;9358:23;;9406:32;9429:8;9406:32;:::i;:::-;9394:44;;8736:712;;;8606:848;;;;;;;:::o;9460:1073::-;9514:5;9705:8;9695:40;;9726:1;9717:10;;9728:5;;9695:40;9754:4;9744:36;;9771:1;9762:10;;9773:5;;9744:36;9840:4;9888:1;9883:27;;;;9924:1;9919:191;;;;9833:277;;9883:27;9901:1;9892:10;;9903:5;;;9919:191;9964:3;9954:8;9951:17;9948:43;;;9971:18;;:::i;:::-;9948:43;10020:8;10017:1;10013:16;10004:25;;10055:3;10048:5;10045:14;10042:40;;;10062:18;;:::i;:::-;10042:40;10095:5;;;9833:277;;10219:2;10209:8;10206:16;10200:3;10194:4;10191:13;10187:36;10169:2;10159:8;10156:16;10151:2;10145:4;10142:12;10138:35;10122:111;10119:246;;;10275:8;10269:4;10265:19;10256:28;;10310:3;10303:5;10300:14;10297:40;;;10317:18;;:::i;:::-;10297:40;10350:5;;10119:246;10390:42;10428:3;10418:8;10412:4;10409:1;10390:42;:::i;:::-;10375:57;;;;10464:4;10459:3;10455:14;10448:5;10445:25;10442:51;;;10473:18;;:::i;:::-;10442:51;10522:4;10515:5;10511:16;10502:25;;9460:1073;;;;;;:::o;10539:281::-;10597:5;10621:23;10639:4;10621:23;:::i;:::-;10613:31;;10665:25;10681:8;10665:25;:::i;:::-;10653:37;;10709:104;10746:66;10736:8;10730:4;10709:104;:::i;:::-;10700:113;;10539:281;;;;:::o;10826:410::-;10866:7;10889:20;10907:1;10889:20;:::i;:::-;10884:25;;10923:20;10941:1;10923:20;:::i;:::-;10918:25;;10978:1;10975;10971:9;11000:30;11018:11;11000:30;:::i;:::-;10989:41;;11179:1;11170:7;11166:15;11163:1;11160:22;11140:1;11133:9;11113:83;11090:139;;11209:18;;:::i;:::-;11090:139;10874:362;10826:410;;;;:::o;11242:60::-;11270:3;11291:5;11284:12;;11242:60;;;:::o;11308:142::-;11358:9;11391:53;11409:34;11418:24;11436:5;11418:24;:::i;:::-;11409:34;:::i;:::-;11391:53;:::i;:::-;11378:66;;11308:142;;;:::o;11456:126::-;11506:9;11539:37;11570:5;11539:37;:::i;:::-;11526:50;;11456:126;;;:::o;11588:134::-;11646:9;11679:37;11710:5;11679:37;:::i;:::-;11666:50;;11588:134;;;:::o;11728:147::-;11823:45;11862:5;11823:45;:::i;:::-;11818:3;11811:58;11728:147;;:::o;11881:348::-;12010:4;12048:2;12037:9;12033:18;12025:26;;12061:79;12137:1;12126:9;12122:17;12113:6;12061:79;:::i;:::-;12150:72;12218:2;12207:9;12203:18;12194:6;12150:72;:::i;:::-;11881:348;;;;;:::o;12235:116::-;12305:21;12320:5;12305:21;:::i;:::-;12298:5;12295:32;12285:60;;12341:1;12338;12331:12;12285:60;12235:116;:::o;12357:137::-;12411:5;12442:6;12436:13;12427:22;;12458:30;12482:5;12458:30;:::i;:::-;12357:137;;;;:::o;12500:345::-;12567:6;12616:2;12604:9;12595:7;12591:23;12587:32;12584:119;;;12622:79;;:::i;:::-;12584:119;12742:1;12767:61;12820:7;12811:6;12800:9;12796:22;12767:61;:::i;:::-;12757:71;;12713:125;12500:345;;;;:::o;12851:173::-;12991:25;12987:1;12979:6;12975:14;12968:49;12851:173;:::o;13030:366::-;13172:3;13193:67;13257:2;13252:3;13193:67;:::i;:::-;13186:74;;13269:93;13358:3;13269:93;:::i;:::-;13387:2;13382:3;13378:12;13371:19;;13030:366;;;:::o;13402:419::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:131;13809:4;13683:131;:::i;:::-;13675:139;;13402:419;;;:::o;13827:85::-;13872:7;13901:5;13890:16;;13827:85;;;:::o;13918:158::-;13976:9;14009:61;14027:42;14036:32;14062:5;14036:32;:::i;:::-;14027:42;:::i;:::-;14009:61;:::i;:::-;13996:74;;13918:158;;;:::o;14082:147::-;14177:45;14216:5;14177:45;:::i;:::-;14172:3;14165:58;14082:147;;:::o;14235:807::-;14484:4;14522:3;14511:9;14507:19;14499:27;;14536:71;14604:1;14593:9;14589:17;14580:6;14536:71;:::i;:::-;14617:72;14685:2;14674:9;14670:18;14661:6;14617:72;:::i;:::-;14699:80;14775:2;14764:9;14760:18;14751:6;14699:80;:::i;:::-;14789;14865:2;14854:9;14850:18;14841:6;14789:80;:::i;:::-;14879:73;14947:3;14936:9;14932:19;14923:6;14879:73;:::i;:::-;14962;15030:3;15019:9;15015:19;15006:6;14962:73;:::i;:::-;14235:807;;;;;;;;;:::o;15048:143::-;15105:5;15136:6;15130:13;15121:22;;15152:33;15179:5;15152:33;:::i;:::-;15048:143;;;;:::o;15197:663::-;15285:6;15293;15301;15350:2;15338:9;15329:7;15325:23;15321:32;15318:119;;;15356:79;;:::i;:::-;15318:119;15476:1;15501:64;15557:7;15548:6;15537:9;15533:22;15501:64;:::i;:::-;15491:74;;15447:128;15614:2;15640:64;15696:7;15687:6;15676:9;15672:22;15640:64;:::i;:::-;15630:74;;15585:129;15753:2;15779:64;15835:7;15826:6;15815:9;15811:22;15779:64;:::i;:::-;15769:74;;15724:129;15197:663;;;;;:::o;15866:223::-;16006:34;16002:1;15994:6;15990:14;15983:58;16075:6;16070:2;16062:6;16058:15;16051:31;15866:223;:::o;16095:366::-;16237:3;16258:67;16322:2;16317:3;16258:67;:::i;:::-;16251:74;;16334:93;16423:3;16334:93;:::i;:::-;16452:2;16447:3;16443:12;16436:19;;16095:366;;;:::o;16467:419::-;16633:4;16671:2;16660:9;16656:18;16648:26;;16720:9;16714:4;16710:20;16706:1;16695:9;16691:17;16684:47;16748:131;16874:4;16748:131;:::i;:::-;16740:139;;16467:419;;;:::o;16892:221::-;17032:34;17028:1;17020:6;17016:14;17009:58;17101:4;17096:2;17088:6;17084:15;17077:29;16892:221;:::o;17119:366::-;17261:3;17282:67;17346:2;17341:3;17282:67;:::i;:::-;17275:74;;17358:93;17447:3;17358:93;:::i;:::-;17476:2;17471:3;17467:12;17460:19;;17119:366;;;:::o;17491:419::-;17657:4;17695:2;17684:9;17680:18;17672:26;;17744:9;17738:4;17734:20;17730:1;17719:9;17715:17;17708:47;17772:131;17898:4;17772:131;:::i;:::-;17764:139;;17491:419;;;:::o;17916:180::-;17964:77;17961:1;17954:88;18061:4;18058:1;18051:15;18085:4;18082:1;18075:15;18102:180;18150:77;18147:1;18140:88;18247:4;18244:1;18237:15;18271:4;18268:1;18261:15;18288:143;18345:5;18376:6;18370:13;18361:22;;18392:33;18419:5;18392:33;:::i;:::-;18288:143;;;;:::o;18437:351::-;18507:6;18556:2;18544:9;18535:7;18531:23;18527:32;18524:119;;;18562:79;;:::i;:::-;18524:119;18682:1;18707:64;18763:7;18754:6;18743:9;18739:22;18707:64;:::i;:::-;18697:74;;18653:128;18437:351;;;;:::o;18794:114::-;18861:6;18895:5;18889:12;18879:22;;18794:114;;;:::o;18914:184::-;19013:11;19047:6;19042:3;19035:19;19087:4;19082:3;19078:14;19063:29;;18914:184;;;;:::o;19104:132::-;19171:4;19194:3;19186:11;;19224:4;19219:3;19215:14;19207:22;;19104:132;;;:::o;19242:108::-;19319:24;19337:5;19319:24;:::i;:::-;19314:3;19307:37;19242:108;;:::o;19356:179::-;19425:10;19446:46;19488:3;19480:6;19446:46;:::i;:::-;19524:4;19519:3;19515:14;19501:28;;19356:179;;;;:::o;19541:113::-;19611:4;19643;19638:3;19634:14;19626:22;;19541:113;;;:::o;19690:732::-;19809:3;19838:54;19886:5;19838:54;:::i;:::-;19908:86;19987:6;19982:3;19908:86;:::i;:::-;19901:93;;20018:56;20068:5;20018:56;:::i;:::-;20097:7;20128:1;20113:284;20138:6;20135:1;20132:13;20113:284;;;20214:6;20208:13;20241:63;20300:3;20285:13;20241:63;:::i;:::-;20234:70;;20327:60;20380:6;20327:60;:::i;:::-;20317:70;;20173:224;20160:1;20157;20153:9;20148:14;;20113:284;;;20117:14;20413:3;20406:10;;19814:608;;;19690:732;;;;:::o;20428:831::-;20691:4;20729:3;20718:9;20714:19;20706:27;;20743:71;20811:1;20800:9;20796:17;20787:6;20743:71;:::i;:::-;20824:80;20900:2;20889:9;20885:18;20876:6;20824:80;:::i;:::-;20951:9;20945:4;20941:20;20936:2;20925:9;20921:18;20914:48;20979:108;21082:4;21073:6;20979:108;:::i;:::-;20971:116;;21097:72;21165:2;21154:9;21150:18;21141:6;21097:72;:::i;:::-;21179:73;21247:3;21236:9;21232:19;21223:6;21179:73;:::i;:::-;20428:831;;;;;;;;:::o;21265:224::-;21405:34;21401:1;21393:6;21389:14;21382:58;21474:7;21469:2;21461:6;21457:15;21450:32;21265:224;:::o;21495:366::-;21637:3;21658:67;21722:2;21717:3;21658:67;:::i;:::-;21651:74;;21734:93;21823:3;21734:93;:::i;:::-;21852:2;21847:3;21843:12;21836:19;;21495:366;;;:::o;21867:419::-;22033:4;22071:2;22060:9;22056:18;22048:26;;22120:9;22114:4;22110:20;22106:1;22095:9;22091:17;22084:47;22148:131;22274:4;22148:131;:::i;:::-;22140:139;;21867:419;;;:::o;22292:222::-;22432:34;22428:1;22420:6;22416:14;22409:58;22501:5;22496:2;22488:6;22484:15;22477:30;22292:222;:::o;22520:366::-;22662:3;22683:67;22747:2;22742:3;22683:67;:::i;:::-;22676:74;;22759:93;22848:3;22759:93;:::i;:::-;22877:2;22872:3;22868:12;22861:19;;22520:366;;;:::o;22892:419::-;23058:4;23096:2;23085:9;23081:18;23073:26;;23145:9;23139:4;23135:20;23131:1;23120:9;23116:17;23109:47;23173:131;23299:4;23173:131;:::i;:::-;23165:139;;22892:419;;;:::o;23317:228::-;23457:34;23453:1;23445:6;23441:14;23434:58;23526:11;23521:2;23513:6;23509:15;23502:36;23317:228;:::o;23551:366::-;23693:3;23714:67;23778:2;23773:3;23714:67;:::i;:::-;23707:74;;23790:93;23879:3;23790:93;:::i;:::-;23908:2;23903:3;23899:12;23892:19;;23551:366;;;:::o;23923:419::-;24089:4;24127:2;24116:9;24112:18;24104:26;;24176:9;24170:4;24166:20;24162:1;24151:9;24147:17;24140:47;24204:131;24330:4;24204:131;:::i;:::-;24196:139;;23923:419;;;:::o;24348:174::-;24488:26;24484:1;24476:6;24472:14;24465:50;24348:174;:::o;24528:366::-;24670:3;24691:67;24755:2;24750:3;24691:67;:::i;:::-;24684:74;;24767:93;24856:3;24767:93;:::i;:::-;24885:2;24880:3;24876:12;24869:19;;24528:366;;;:::o;24900:419::-;25066:4;25104:2;25093:9;25089:18;25081:26;;25153:9;25147:4;25143:20;25139:1;25128:9;25124:17;25117:47;25181:131;25307:4;25181:131;:::i;:::-;25173:139;;24900:419;;;:::o;25325:191::-;25365:3;25384:20;25402:1;25384:20;:::i;:::-;25379:25;;25418:20;25436:1;25418:20;:::i;:::-;25413:25;;25461:1;25458;25454:9;25447:16;;25482:3;25479:1;25476:10;25473:36;;;25489:18;;:::i;:::-;25473:36;25325:191;;;;:::o;25522:176::-;25662:28;25658:1;25650:6;25646:14;25639:52;25522:176;:::o;25704:366::-;25846:3;25867:67;25931:2;25926:3;25867:67;:::i;:::-;25860:74;;25943:93;26032:3;25943:93;:::i;:::-;26061:2;26056:3;26052:12;26045:19;;25704:366;;;:::o;26076:419::-;26242:4;26280:2;26269:9;26265:18;26257:26;;26329:9;26323:4;26319:20;26315:1;26304:9;26300:17;26293:47;26357:131;26483:4;26357:131;:::i;:::-;26349:139;;26076:419;;;:::o;26501:233::-;26540:3;26563:24;26581:5;26563:24;:::i;:::-;26554:33;;26609:66;26602:5;26599:77;26596:103;;26679:18;;:::i;:::-;26596:103;26726:1;26719:5;26715:13;26708:20;;26501:233;;;:::o;26740:173::-;26880:25;26876:1;26868:6;26864:14;26857:49;26740:173;:::o;26919:366::-;27061:3;27082:67;27146:2;27141:3;27082:67;:::i;:::-;27075:74;;27158:93;27247:3;27158:93;:::i;:::-;27276:2;27271:3;27267:12;27260:19;;26919:366;;;:::o;27291:419::-;27457:4;27495:2;27484:9;27480:18;27472:26;;27544:9;27538:4;27534:20;27530:1;27519:9;27515:17;27508:47;27572:131;27698:4;27572:131;:::i;:::-;27564:139;;27291:419;;;:::o;27716:194::-;27756:4;27776:20;27794:1;27776:20;:::i;:::-;27771:25;;27810:20;27828:1;27810:20;:::i;:::-;27805:25;;27854:1;27851;27847:9;27839:17;;27878:1;27872:4;27869:11;27866:37;;;27883:18;;:::i;:::-;27866:37;27716:194;;;;:::o;27916:180::-;27964:77;27961:1;27954:88;28061:4;28058:1;28051:15;28085:4;28082:1;28075:15;28102:185;28142:1;28159:20;28177:1;28159:20;:::i;:::-;28154:25;;28193:20;28211:1;28193:20;:::i;:::-;28188:25;;28232:1;28222:35;;28237:18;;:::i;:::-;28222:35;28279:1;28276;28272:9;28267:14;;28102:185;;;;:::o;28293:220::-;28433:34;28429:1;28421:6;28417:14;28410:58;28502:3;28497:2;28489:6;28485:15;28478:28;28293:220;:::o;28519:366::-;28661:3;28682:67;28746:2;28741:3;28682:67;:::i;:::-;28675:74;;28758:93;28847:3;28758:93;:::i;:::-;28876:2;28871:3;28867:12;28860:19;;28519:366;;;:::o;28891:419::-;29057:4;29095:2;29084:9;29080:18;29072:26;;29144:9;29138:4;29134:20;29130:1;29119:9;29115:17;29108:47;29172:131;29298:4;29172:131;:::i;:::-;29164:139;;28891:419;;;:::o;29316:177::-;29456:29;29452:1;29444:6;29440:14;29433:53;29316:177;:::o;29499:366::-;29641:3;29662:67;29726:2;29721:3;29662:67;:::i;:::-;29655:74;;29738:93;29827:3;29738:93;:::i;:::-;29856:2;29851:3;29847:12;29840:19;;29499:366;;;:::o;29871:419::-;30037:4;30075:2;30064:9;30060:18;30052:26;;30124:9;30118:4;30114:20;30110:1;30099:9;30095:17;30088:47;30152:131;30278:4;30152:131;:::i;:::-;30144:139;;29871:419;;;:::o

Swarm Source

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