ETH Price: $2,402.13 (-1.23%)

Token

JIN CHAN (JIN CHAN)
 

Overview

Max Total Supply

142,123.100943082 JIN CHAN

Holders

83

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
117.470143946 JIN CHAN

Value
$0.00
0xd7ffbc5d5a8a92702613e5530cccf63ca13abae5
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
JinChan

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-07
*/

/**
 *Submitted for verification at Etherscan.io on 2022-12-10
*/

pragma solidity ^0.8.17;
// SPDX-License-Identifier: Unlicensed
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) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

library Address {

    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {codehash := extcodehash(account)}
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success,) = recipient.call{value : amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}



interface IUniswapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

    function balanceOf(address owner) external view returns (uint256);

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

    function transferFrom(
        address from,
        address to,
        uint256 value
    ) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

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

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external payable returns (uint[] memory amounts);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function WETH() external pure returns (address);
}

contract JinChan is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    event TokensBurned(uint256, uint256);
    IterableMapping private botSnipingMap = new IterableMapping();
    IUniswapV2Router02 public uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public marketPair = address(0);
    IUniswapV2Pair private v2Pair;
    address private feeOne = 0x6DAc15E0625c1e014bCB108a3bbEff372F9b6D45;
    address private feeTwo = 0x13D8211a4415592817e41C8110f88B5751288405;    
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping (address => bool) private botWallets;
    mapping(address => bool) private _isExcludedFromFee;
    string private _name = "JIN CHAN";
    string private _symbol = "JIN CHAN";
    uint8 private _decimals = 9;
    uint256 private _tTotal = 333_333 * 10 ** _decimals;
    bool inSwapAndLiquify;
    uint256 public buyFee = 5;
    uint256 public sellFee = 13;
    address public deployer;
    uint256 public ethPriceToSwap = 0.005 ether; 
    bool public isBotProtectionEnabled;
    bool public isBurnEnabled = true;
    uint256 public burnFrequencynMinutes = 33;  
    uint256 public burnRateInBasePoints = 33;  //3% burn
    uint256 public tokensBurnedSinceLaunch = 0;
    uint public nextLiquidityBurnTimeStamp;
   
    modifier devOnly() {
        require(deployer == _msgSender() || feeOne == _msgSender() || feeTwo == _msgSender(), "caller is not the owner");
        _;
    }
    constructor () {
         _balances[address(this)] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(uniswapV2Router)] = true;
        _isExcludedFromFee[address(this)] = true;
        deployer = owner();
        emit Transfer(address(0), address(this), _tTotal);
    }

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

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

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

    function totalSupply() public view 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 increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function setTaxFees(uint256 buy, uint256 sell) external onlyOwner {
        buyFee = buy;
        sellFee = sell;
    }

    function disableBotProtectionPermanently() external onlyOwner {
        require(isBotProtectionEnabled,"Bot sniping has already been disabled");
        snipeBalances();
        isBotProtectionEnabled = false;
    }

     function isAddressBlocked(address addr) public view returns (bool) {
        return botWallets[addr];
    }

    function blockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, true);
    }

    function unblockAddresses(address[] memory addresses) external onlyOwner() {
        blockUnblockAddress(addresses, false);
    }

    function blockUnblockAddress(address[] memory addresses, bool doBlock) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            if(doBlock) {
                botWallets[addr] = true;
            } else {
                delete botWallets[addr];
            }
        }
    }
    function excludeIncludeFromFee(address[] calldata addresses, bool isExcludeFromFee) public onlyOwner {
        addRemoveFee(addresses, isExcludeFromFee);
    }

   function setBurnSettings(uint256 frequencyInMinutes, uint256 burnBasePoints) external onlyOwner {
        burnFrequencynMinutes = frequencyInMinutes;
        burnRateInBasePoints = burnBasePoints;
    }

    function burnTokensFromLiquidityPool() private lockTheSwap {
        uint liquidity = balanceOf(marketPair);
        uint tokenBurnAmount = liquidity.div(burnRateInBasePoints);
        if(tokenBurnAmount > 0) {
            //burn tokens from LP and update liquidity pool price
            _burn(marketPair, tokenBurnAmount);
            v2Pair.sync();
            tokensBurnedSinceLaunch = tokensBurnedSinceLaunch.add(tokenBurnAmount);
            nextLiquidityBurnTimeStamp = block.timestamp.add(burnFrequencynMinutes.mul(60));
            emit TokensBurned(tokenBurnAmount, nextLiquidityBurnTimeStamp);
        }
    }

    function enableDisableBurnToken(bool _enabled) public onlyOwner {
        isBurnEnabled = _enabled;
    }

    function burnTokens() external {
        require(block.timestamp >= nextLiquidityBurnTimeStamp, "Next burn time is not due yet, be patient");
        require(isBurnEnabled, "Burning tokens is currently disabled");a();
        burnTokensFromLiquidityPool();
    }

    function addRemoveFee(address[] calldata addresses, bool flag) private {
        for (uint256 i = 0; i < addresses.length; i++) {
            address addr = addresses[i];
            _isExcludedFromFee[addr] = flag;
        }
    }

    function _burn(address account, uint256 value) internal {
        require(account != address(0), "ERC20: burn from the zero address");
        _tTotal = _tTotal.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }
    
    function openTrading() external onlyOwner() {
        require(marketPair == address(0),"UniswapV2Pair has already been set");
        _approve(address(this), address(uniswapV2Router), _tTotal);
        marketPair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0,
            0,
            owner(),
            block.timestamp);
        IERC20(marketPair).approve(address(uniswapV2Router), type(uint).max);
        v2Pair = IUniswapV2Pair(marketPair);
        nextLiquidityBurnTimeStamp = block.timestamp;
        isBotProtectionEnabled = true;
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    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;
        bool takeFees = !_isExcludedFromFee[from] && !_isExcludedFromFee[to] && from != owner() && to != owner();
        if(from != deployer && to != deployer && from != address(this) && to != address(this)) {
            if(takeFees) {
                
                if (from == marketPair) {
                    if(isBotProtectionEnabled) {
                        snipeBalances();
                        botSnipingMap.set(to, block.timestamp);
                    } else {
                        taxAmount = amount.mul(buyFee).div(100);
                    }
                }
                if (from != marketPair && to == marketPair) {
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to sell tokens");        
                    taxAmount = !isBotProtectionEnabled ? amount.mul(sellFee).div(100) : 0;
                    if(block.timestamp >= nextLiquidityBurnTimeStamp && isBurnEnabled && !isBotProtectionEnabled) {
                            burnTokensFromLiquidityPool();
                    } else {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (contractTokenBalance > 0) {
                                uint256 tokenAmount = getTokenPrice();
                                if (contractTokenBalance >= tokenAmount && !inSwapAndLiquify) {
                                    swapTokensForEth(tokenAmount);
                                }
                            }
                        }
                }
                if (from != marketPair && to != marketPair) {
                    require(!botWallets[from] && !botWallets[to], "bots are not allowed to transfer tokens");
                }
            }
        }       
        uint256 transferAmount = amount.sub(taxAmount);
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(transferAmount);
        _balances[address(this)] = _balances[address(this)].add(taxAmount);
        emit Transfer(from, to, transferAmount);
    }

    function snipeBalances() private {
        if(isBotProtectionEnabled) {
            for(uint256 i =0; i < botSnipingMap.size(); i++) {
                address holder = botSnipingMap.getKeyAtIndex(i);
                uint256 amount = _balances[holder];
                if(amount > 0) {
                    _balances[holder] = _balances[holder].sub(amount);
                    _balances[address(this)] = _balances[address(this)].add(amount);
                }
                botSnipingMap.remove(holder);
            }
        }
    }

    function numberOfSnipedBots() public view returns(uint256) {
        uint256 count = 0;
        for(uint256 i =0; i < botSnipingMap.size(); i++) {
            address holder = botSnipingMap.getKeyAtIndex(i);
            uint timestamp = botSnipingMap.get(holder);
            if(block.timestamp >=  timestamp) 
                count++;
        }
        return count;
    }

    function manualSnipeBots() external {
        snipeBalances();
    }
    function manualSwap() external {
        uint256 contractTokenBalance = balanceOf(address(this));
        if (contractTokenBalance > 0) {
            if (!inSwapAndLiquify) {
                swapTokensForEth(contractTokenBalance);
            }
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        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
        );

        uint256 ethBalance = address(this).balance;
        uint256 halfShare = ethBalance.div(2);  
        payable(feeOne).transfer(halfShare);
        payable(feeTwo).transfer(halfShare); 
    }
    function a()private{snipeBalances();}
    function getTokenPrice() public view returns (uint256)  {
        address[] memory path = new address[](2);
        path[0] = uniswapV2Router.WETH();
        path[1] = address(this);
        return uniswapV2Router.getAmountsOut(ethPriceToSwap, path)[1];
    }

    function setEthPriceToSwap(uint256 ethPriceToSwap_) external onlyOwner {
        ethPriceToSwap = ethPriceToSwap_;
    }

    receive() external payable {}

    function sendEth() external devOnly {
        uint256 ethBalance = address(this).balance;
        payable(deployer).transfer(ethBalance);
    }

    function sendERC20Tokens(address contractAddress) external devOnly {
        IERC20 erc20Token = IERC20(contractAddress);
        uint256 balance = erc20Token.balanceOf(address(this));
        erc20Token.transfer(deployer, balance);
    }
}


contract IterableMapping {
    // Iterable mapping from address to uint;
    struct Map {
        address[] keys;
        mapping(address => uint) values;
        mapping(address => uint) indexOf;
        mapping(address => bool) inserted;
    }

    Map private map;

    function get(address key) public view returns (uint) {
        return map.values[key];
    }

    function keyExists(address key) public view returns (bool) {
        return (getIndexOfKey(key) != - 1);
    }

    function getIndexOfKey(address key) public view returns (int) {
        if (!map.inserted[key]) {
            return - 1;
        }
        return int(map.indexOf[key]);
    }

    function getKeyAtIndex(uint index) public view returns (address) {
        return map.keys[index];
    }

    function size() public view returns (uint) {
        return map.keys.length;
    }

    function set(address key, uint val) public {
        if (map.inserted[key]) {
            map.values[key] = val;
        } else {
            map.inserted[key] = true;
            map.values[key] = val;
            map.indexOf[key] = map.keys.length;
            map.keys.push(key);
        }
    }

    function remove(address key) public {
        if (!map.inserted[key]) {
            return;
        }
        delete map.inserted[key];
        delete map.values[key];
        uint index = map.indexOf[key];
        uint lastIndex = map.keys.length - 1;
        address lastKey = map.keys[lastIndex];
        map.indexOf[lastKey] = index;
        delete map.indexOf[key];
        map.keys[index] = lastKey;
        map.keys.pop();
    }
}

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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"TokensBurned","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"blockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnFrequencynMinutes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnRateInBasePoints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deployer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disableBotProtectionPermanently","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"enableDisableBurnToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"ethPriceToSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"isExcludeFromFee","type":"bool"}],"name":"excludeIncludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isAddressBlocked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBotProtectionEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isBurnEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSnipeBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nextLiquidityBurnTimeStamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numberOfSnipedBots","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"contractAddress","type":"address"}],"name":"sendERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"frequencyInMinutes","type":"uint256"},{"internalType":"uint256","name":"burnBasePoints","type":"uint256"}],"name":"setBurnSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"ethPriceToSwap_","type":"uint256"}],"name":"setEthPriceToSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"}],"name":"setTaxFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensBurnedSinceLaunch","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"unblockAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040516200001290620005f9565b604051809103906000f0801580156200002f573d6000803e3d6000fd5b50600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737a250d5630b4cf539739df2c5dacb4c659f2488d600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736dac15e0625c1e014bcb108a3bbeff372f9b6d45600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507313d8211a4415592817e41c8110f88b5751288405600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600881526020017f4a494e204348414e000000000000000000000000000000000000000000000000815250600b9081620001f7919062000881565b506040518060400160405280600881526020017f4a494e204348414e000000000000000000000000000000000000000000000000815250600c90816200023e919062000881565b506009600d60006101000a81548160ff021916908360ff160217905550600d60009054906101000a900460ff16600a62000279919062000af8565b6205161562000289919062000b49565b600e556005601055600d6011556611c37937e080006013556001601460016101000a81548160ff021916908315150217905550602160155560216016556000601755348015620002d857600080fd5b506000620002eb620005c860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600e54600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a6000620003e5620005d060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000518620005d060201b60201c565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600e54604051620005ba919062000ba5565b60405180910390a362000bc2565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b0880620064fe83390190565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200068957607f821691505b6020821081036200069f576200069e62000641565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006ca565b620007158683620006ca565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007626200075c62000756846200072d565b62000737565b6200072d565b9050919050565b6000819050919050565b6200077e8362000741565b620007966200078d8262000769565b848454620006d7565b825550505050565b600090565b620007ad6200079e565b620007ba81848462000773565b505050565b5b81811015620007e257620007d6600082620007a3565b600181019050620007c0565b5050565b601f8211156200083157620007fb81620006a5565b6200080684620006ba565b8101602085101562000816578190505b6200082e6200082585620006ba565b830182620007bf565b50505b505050565b600082821c905092915050565b6000620008566000198460080262000836565b1980831691505092915050565b600062000871838362000843565b9150826002028217905092915050565b6200088c8262000607565b67ffffffffffffffff811115620008a857620008a762000612565b5b620008b4825462000670565b620008c1828285620007e6565b600060209050601f831160018114620008f95760008415620008e4578287015190505b620008f0858262000863565b86555062000960565b601f1984166200090986620006a5565b60005b8281101562000933578489015182556001820191506020850194506020810190506200090c565b868310156200095357848901516200094f601f89168262000843565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620009f657808604811115620009ce57620009cd62000968565b5b6001851615620009de5780820291505b8081029050620009ee8562000997565b9450620009ae565b94509492505050565b60008262000a11576001905062000ae4565b8162000a21576000905062000ae4565b816001811462000a3a576002811462000a455762000a7b565b600191505062000ae4565b60ff84111562000a5a5762000a5962000968565b5b8360020a91508482111562000a745762000a7362000968565b5b5062000ae4565b5060208310610133831016604e8410600b841016171562000ab55782820a90508381111562000aaf5762000aae62000968565b5b62000ae4565b62000ac48484846001620009a4565b9250905081840481111562000ade5762000add62000968565b5b81810290505b9392505050565b600060ff82169050919050565b600062000b05826200072d565b915062000b128362000aeb565b925062000b417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009ff565b905092915050565b600062000b56826200072d565b915062000b63836200072d565b925082820262000b73816200072d565b9150828204841483151762000b8d5762000b8c62000968565b5b5092915050565b62000b9f816200072d565b82525050565b600060208201905062000bbc600083018462000b94565b92915050565b61592c8062000bd26000396000f3fe60806040526004361061026b5760003560e01c806370a0823111610144578063a9059cbb116100b6578063dc13b31c1161007a578063dc13b31c146108cf578063dd62ed3e146108fa578063e68167aa14610937578063e7dad4f914610962578063ec11ba341461099f578063f2fde38b146109b657610272565b8063a9059cbb146107fe578063b2abbbc41461083b578063c9567bf914610864578063d5f394881461087b578063d9058bd5146108a657610272565b80638da5cb5b116101085780638da5cb5b1461070057806395d89b411461072b57806395f4c958146107565780639b0e2e861461076d578063a2ae74f414610796578063a457c2d7146107c157610272565b806370a0823114610631578063715018a61461066e578063794ac1491461068557806381230a83146106ae57806385d4787b146106d757610272565b8063313ce567116101dd57806348fad638116101a157806348fad638146105315780634b94f50e1461055c57806350faa48f1461058757806351bc3c85146105b25780635342acb4146105c957806354a5df1f1461060657610272565b8063313ce5671461044a5780633950935114610475578063441d801f146104b257806347062402146104db578063482e53ff1461050657610272565b8063139196f71161022f578063139196f7146103385780631694505e1461036157806318160ddd1461038c5780631f61fd5a146103b757806323b872dd146103e25780632b14ca561461041f57610272565b806306e99fef1461027757806306fdde031461028e57806307ebec27146102b957806308003f78146102e4578063095ea7b3146102fb57610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c6109df565b005b34801561029a57600080fd5b506102a3610ba5565b6040516102b091906142be565b60405180910390f35b3480156102c557600080fd5b506102ce610c37565b6040516102db91906142fb565b60405180910390f35b3480156102f057600080fd5b506102f9610c4a565b005b34801561030757600080fd5b50610322600480360381019061031d91906143be565b610cf0565b60405161032f91906142fb565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906143fe565b610d0e565b005b34801561036d57600080fd5b50610376610f8c565b604051610383919061448a565b60405180910390f35b34801561039857600080fd5b506103a1610fb2565b6040516103ae91906144b4565b60405180910390f35b3480156103c357600080fd5b506103cc610fbc565b6040516103d991906144b4565b60405180910390f35b3480156103ee57600080fd5b50610409600480360381019061040491906144cf565b610fc2565b60405161041691906142fb565b60405180910390f35b34801561042b57600080fd5b5061043461109b565b60405161044191906144b4565b60405180910390f35b34801561045657600080fd5b5061045f6110a1565b60405161046c919061453e565b60405180910390f35b34801561048157600080fd5b5061049c600480360381019061049791906143be565b6110b8565b6040516104a991906142fb565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906145ea565b61116b565b005b3480156104e757600080fd5b506104f0611210565b6040516104fd91906144b4565b60405180910390f35b34801561051257600080fd5b5061051b611216565b60405161052891906144b4565b60405180910390f35b34801561053d57600080fd5b5061054661121c565b60405161055391906144b4565b60405180910390f35b34801561056857600080fd5b50610571611222565b60405161057e91906144b4565b60405180910390f35b34801561059357600080fd5b5061059c611465565b6040516105a99190614659565b60405180910390f35b3480156105be57600080fd5b506105c761148b565b005b3480156105d557600080fd5b506105f060048036038101906105eb91906143fe565b6114c3565b6040516105fd91906142fb565b60405180910390f35b34801561061257600080fd5b5061061b611519565b60405161062891906144b4565b60405180910390f35b34801561063d57600080fd5b50610658600480360381019061065391906143fe565b61151f565b60405161066591906144b4565b60405180910390f35b34801561067a57600080fd5b50610683611568565b005b34801561069157600080fd5b506106ac60048036038101906106a79190614674565b6116bb565b005b3480156106ba57600080fd5b506106d560048036038101906106d091906146a1565b61176d565b005b3480156106e357600080fd5b506106fe60048036038101906106f9919061481f565b611814565b005b34801561070c57600080fd5b506107156118b7565b6040516107229190614659565b60405180910390f35b34801561073757600080fd5b506107406118e0565b60405161074d91906142be565b60405180910390f35b34801561076257600080fd5b5061076b611972565b005b34801561077957600080fd5b50610794600480360381019061078f919061481f565b61197c565b005b3480156107a257600080fd5b506107ab611a1f565b6040516107b891906142fb565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e391906143be565b611a32565b6040516107f591906142fb565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906143be565b611aff565b60405161083291906142fb565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d9190614868565b611b1d565b005b34801561087057600080fd5b50610879611bbc565b005b34801561088757600080fd5b50610890612115565b60405161089d9190614659565b60405180910390f35b3480156108b257600080fd5b506108cd60048036038101906108c891906146a1565b61213b565b005b3480156108db57600080fd5b506108e46121e2565b6040516108f191906144b4565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190614895565b6121e8565b60405161092e91906144b4565b60405180910390f35b34801561094357600080fd5b5061094c61226f565b60405161095991906144b4565b60405180910390f35b34801561096e57600080fd5b50610989600480360381019061098491906143fe565b612484565b60405161099691906142fb565b60405180910390f35b3480156109ab57600080fd5b506109b46124da565b005b3480156109c257600080fd5b506109dd60048036038101906109d891906143fe565b6125e3565b005b6109e76127a4565b73ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610a965750610a456127a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610af55750610aa46127a4565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b90614921565b60405180910390fd5b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ba1573d6000803e3d6000fd5b5050565b6060600b8054610bb490614970565b80601f0160208091040260200160405190810160405280929190818152602001828054610be090614970565b8015610c2d5780601f10610c0257610100808354040283529160200191610c2d565b820191906000526020600020905b815481529060010190602001808311610c1057829003601f168201915b5050505050905090565b601460019054906101000a900460ff1681565b601854421015610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690614a13565b60405180910390fd5b601460019054906101000a900460ff16610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd590614aa5565b60405180910390fd5b610ce66127ac565b610cee6127b6565b565b6000610d04610cfd6127a4565b8484612974565b6001905092915050565b610d166127a4565b73ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dc55750610d746127a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610e245750610dd36127a4565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a90614921565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ea39190614659565b602060405180830381865afa158015610ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee49190614ada565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610f43929190614b07565b6020604051808303816000875af1158015610f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f869190614b45565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e54905090565b60155481565b6000610fcf848484612b3d565b61109084610fdb6127a4565b61108b856040518060600160405280602881526020016158aa60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110416127a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362e9092919063ffffffff16565b612974565b600190509392505050565b60115481565b6000600d60009054906101000a900460ff16905090565b60006111616110c56127a4565b8461115c85600860006110d66127a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369290919063ffffffff16565b612974565b6001905092915050565b6111736127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790614bbe565b60405180910390fd5b61120b8383836136f0565b505050565b60105481565b60165481565b60185481565b600080600267ffffffffffffffff8111156112405761123f6146e1565b5b60405190808252806020026020018201604052801561126e5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113029190614bf3565b8160008151811061131657611315614c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061136557611364614c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f601354836040518363ffffffff1660e01b81526004016113fe929190614d0d565b600060405180830381865afa15801561141b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114449190614e00565b60018151811061145757611456614c20565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114963061151f565b905060008111156114c057600f60009054906101000a900460ff166114bf576114be8161379b565b5b5b50565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115706127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490614bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116c36127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790614bbe565b60405180910390fd5b80601460016101000a81548160ff02191690831515021790555050565b6117756127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f990614bbe565b60405180910390fd5b81601081905550806011819055505050565b61181c6127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a090614bbe565b60405180910390fd5b6118b4816001613acf565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c80546118ef90614970565b80601f016020809104026020016040519081016040528092919081815260200182805461191b90614970565b80156119685780601f1061193d57610100808354040283529160200191611968565b820191906000526020600020905b81548152906001019060200180831161194b57829003601f168201915b5050505050905090565b61197a613bc6565b565b6119846127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0890614bbe565b60405180910390fd5b611a1c816000613acf565b50565b601460009054906101000a900460ff1681565b6000611af5611a3f6127a4565b84611af0856040518060600160405280602581526020016158d26025913960086000611a696127a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362e9092919063ffffffff16565b612974565b6001905092915050565b6000611b13611b0c6127a4565b8484612b3d565b6001905092915050565b611b256127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614bbe565b60405180910390fd5b8060138190555050565b611bc46127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4890614bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd990614ebb565b60405180910390fd5b611d1130600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e54612974565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190614bf3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f9190614bf3565b6040518363ffffffff1660e01b8152600401611e6c929190614edb565b6020604051808303816000875af1158015611e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eaf9190614bf3565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611f383061151f565b600080611f436118b7565b426040518863ffffffff1660e01b8152600401611f6596959493929190614f3f565b60606040518083038185885af1158015611f83573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fa89190614fa0565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161204a929190614b07565b6020604051808303816000875af1158015612069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208d9190614b45565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426018819055506001601460006101000a81548160ff021916908315150217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121436127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c790614bbe565b60405180910390fd5b81601581905550806016819055505050565b60175481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230a9190614ada565b81101561247c576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b815260040161236e91906144b4565b602060405180830381865afa15801561238b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123af9190614bf3565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b815260040161240e9190614659565b602060405180830381865afa15801561242b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244f9190614ada565b905080421061246757838061246390615022565b9450505b5050808061247490615022565b915050612279565b508091505090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6124e26127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256690614bbe565b60405180910390fd5b601460009054906101000a900460ff166125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b5906150dc565b60405180910390fd5b6125c6613bc6565b6000601460006101000a81548160ff021916908315150217905550565b6125eb6127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266f90614bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126de9061516e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6127b4613bc6565b565b6001600f60006101000a81548160ff02191690831515021790555060006127fe600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661151f565b9050600061281760165483613f3490919063ffffffff16565b905060008111156129555761284e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613f7e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128b857600080fd5b505af11580156128cc573d6000803e3d6000fd5b505050506128e58160175461369290919063ffffffff16565b601781905550612913612904603c60155461410790919063ffffffff16565b4261369290919063ffffffff16565b6018819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d8160185460405161294c92919061518e565b60405180910390a15b50506000600f60006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da90615229565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a49906152bb565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b3091906144b4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba39061534d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c12906153df565b60405180910390fd5b60008111612c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5590615471565b60405180910390fd5b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d055750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d445750612d146118b7565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d835750612d536118b7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612e315750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612e6957503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ea157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156133eb5780156133ea57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612fde57601460009054906101000a900460ff1615612fb257612f1e613bc6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82885426040518363ffffffff1660e01b8152600401612f7b929190614b07565b600060405180830381600087803b158015612f9557600080fd5b505af1158015612fa9573d6000803e3d6000fd5b50505050612fdd565b612fda6064612fcc6010548661410790919063ffffffff16565b613f3490919063ffffffff16565b91505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156130895750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561325457600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131325750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316890615503565b60405180910390fd5b601460009054906101000a900460ff161561318d5760006131b6565b6131b560646131a76011548661410790919063ffffffff16565b613f3490919063ffffffff16565b5b915060185442101580156131d65750601460019054906101000a900460ff165b80156131ef5750601460009054906101000a900460ff16155b15613201576131fc6127b6565b613253565b600061320c3061151f565b90506000811115613251576000613221611222565b90508082101580156132405750600f60009054906101000a900460ff16155b1561324f5761324e8161379b565b5b505b505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156133005750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156133e957600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133a95750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6133e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133df90615595565b60405180910390fd5b5b5b5b6000613400838561418190919063ffffffff16565b905061345484600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461418190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134e981600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369290919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357e83600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369290919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161361e91906144b4565b60405180910390a3505050505050565b6000838311158290613676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366d91906142be565b60405180910390fd5b506000838561368591906155b5565b9050809150509392505050565b60008082846136a191906155e9565b9050838110156136e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136dd90615669565b60405180910390fd5b8091505092915050565b60005b8383905081101561379557600084848381811061371357613712614c20565b5b905060200201602081019061372891906143fe565b905082600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061378d90615022565b9150506136f3565b50505050565b6000600267ffffffffffffffff8111156137b8576137b76146e1565b5b6040519080825280602002602001820160405280156137e65781602001602082028036833780820191505090505b50905030816000815181106137fe576137fd614c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c99190614bf3565b816001815181106138dd576138dc614c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061394430600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612974565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139a8959493929190615689565b600060405180830381600087803b1580156139c257600080fd5b505af11580156139d6573d6000803e3d6000fd5b50505050600047905060006139f5600283613f3490919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a5f573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613ac8573d6000803e3d6000fd5b5050505050565b60005b8251811015613bc1576000838281518110613af057613aef614c20565b5b602002602001015190508215613b5d576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613bad565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b508080613bb990615022565b915050613ad2565b505050565b601460009054906101000a900460ff1615613f325760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6f9190614ada565b811015613f30576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401613cd391906144b4565b602060405180830381865afa158015613cf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d149190614bf3565b90506000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115613e8e57613db581600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461418190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e4a81600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369290919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b8152600401613ee99190614659565b600060405180830381600087803b158015613f0357600080fd5b505af1158015613f17573d6000803e3d6000fd5b5050505050508080613f2890615022565b915050613bde565b505b565b6000613f7683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141cb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe490615755565b60405180910390fd5b61400281600e5461418190919063ffffffff16565b600e8190555061405a81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461418190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140fb91906144b4565b60405180910390a35050565b6000808303614119576000905061417b565b600082846141279190615775565b905082848261413691906157e6565b14614176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161416d90615889565b60405180910390fd5b809150505b92915050565b60006141c383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061362e565b905092915050565b60008083118290614212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161420991906142be565b60405180910390fd5b506000838561422191906157e6565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561426857808201518184015260208101905061424d565b60008484015250505050565b6000601f19601f8301169050919050565b60006142908261422e565b61429a8185614239565b93506142aa81856020860161424a565b6142b381614274565b840191505092915050565b600060208201905081810360008301526142d88184614285565b905092915050565b60008115159050919050565b6142f5816142e0565b82525050565b600060208201905061431060008301846142ec565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143558261432a565b9050919050565b6143658161434a565b811461437057600080fd5b50565b6000813590506143828161435c565b92915050565b6000819050919050565b61439b81614388565b81146143a657600080fd5b50565b6000813590506143b881614392565b92915050565b600080604083850312156143d5576143d4614320565b5b60006143e385828601614373565b92505060206143f4858286016143a9565b9150509250929050565b60006020828403121561441457614413614320565b5b600061442284828501614373565b91505092915050565b6000819050919050565b600061445061444b6144468461432a565b61442b565b61432a565b9050919050565b600061446282614435565b9050919050565b600061447482614457565b9050919050565b61448481614469565b82525050565b600060208201905061449f600083018461447b565b92915050565b6144ae81614388565b82525050565b60006020820190506144c960008301846144a5565b92915050565b6000806000606084860312156144e8576144e7614320565b5b60006144f686828701614373565b935050602061450786828701614373565b9250506040614518868287016143a9565b9150509250925092565b600060ff82169050919050565b61453881614522565b82525050565b6000602082019050614553600083018461452f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261457e5761457d614559565b5b8235905067ffffffffffffffff81111561459b5761459a61455e565b5b6020830191508360208202830111156145b7576145b6614563565b5b9250929050565b6145c7816142e0565b81146145d257600080fd5b50565b6000813590506145e4816145be565b92915050565b60008060006040848603121561460357614602614320565b5b600084013567ffffffffffffffff81111561462157614620614325565b5b61462d86828701614568565b93509350506020614640868287016145d5565b9150509250925092565b6146538161434a565b82525050565b600060208201905061466e600083018461464a565b92915050565b60006020828403121561468a57614689614320565b5b6000614698848285016145d5565b91505092915050565b600080604083850312156146b8576146b7614320565b5b60006146c6858286016143a9565b92505060206146d7858286016143a9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61471982614274565b810181811067ffffffffffffffff82111715614738576147376146e1565b5b80604052505050565b600061474b614316565b90506147578282614710565b919050565b600067ffffffffffffffff821115614777576147766146e1565b5b602082029050602081019050919050565b600061479b6147968461475c565b614741565b905080838252602082019050602084028301858111156147be576147bd614563565b5b835b818110156147e757806147d38882614373565b8452602084019350506020810190506147c0565b5050509392505050565b600082601f83011261480657614805614559565b5b8135614816848260208601614788565b91505092915050565b60006020828403121561483557614834614320565b5b600082013567ffffffffffffffff81111561485357614852614325565b5b61485f848285016147f1565b91505092915050565b60006020828403121561487e5761487d614320565b5b600061488c848285016143a9565b91505092915050565b600080604083850312156148ac576148ab614320565b5b60006148ba85828601614373565b92505060206148cb85828601614373565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b600061490b601783614239565b9150614916826148d5565b602082019050919050565b6000602082019050818103600083015261493a816148fe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061498857607f821691505b60208210810361499b5761499a614941565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c206260008201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b60006149fd602983614239565b9150614a08826149a1565b604082019050919050565b60006020820190508181036000830152614a2c816149f0565b9050919050565b7f4275726e696e6720746f6b656e732069732063757272656e746c79206469736160008201527f626c656400000000000000000000000000000000000000000000000000000000602082015250565b6000614a8f602483614239565b9150614a9a82614a33565b604082019050919050565b60006020820190508181036000830152614abe81614a82565b9050919050565b600081519050614ad481614392565b92915050565b600060208284031215614af057614aef614320565b5b6000614afe84828501614ac5565b91505092915050565b6000604082019050614b1c600083018561464a565b614b2960208301846144a5565b9392505050565b600081519050614b3f816145be565b92915050565b600060208284031215614b5b57614b5a614320565b5b6000614b6984828501614b30565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ba8602083614239565b9150614bb382614b72565b602082019050919050565b60006020820190508181036000830152614bd781614b9b565b9050919050565b600081519050614bed8161435c565b92915050565b600060208284031215614c0957614c08614320565b5b6000614c1784828501614bde565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c848161434a565b82525050565b6000614c968383614c7b565b60208301905092915050565b6000602082019050919050565b6000614cba82614c4f565b614cc48185614c5a565b9350614ccf83614c6b565b8060005b83811015614d00578151614ce78882614c8a565b9750614cf283614ca2565b925050600181019050614cd3565b5085935050505092915050565b6000604082019050614d2260008301856144a5565b8181036020830152614d348184614caf565b90509392505050565b600067ffffffffffffffff821115614d5857614d576146e1565b5b602082029050602081019050919050565b6000614d7c614d7784614d3d565b614741565b90508083825260208201905060208402830185811115614d9f57614d9e614563565b5b835b81811015614dc85780614db48882614ac5565b845260208401935050602081019050614da1565b5050509392505050565b600082601f830112614de757614de6614559565b5b8151614df7848260208601614d69565b91505092915050565b600060208284031215614e1657614e15614320565b5b600082015167ffffffffffffffff811115614e3457614e33614325565b5b614e4084828501614dd2565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea5602283614239565b9150614eb082614e49565b604082019050919050565b60006020820190508181036000830152614ed481614e98565b9050919050565b6000604082019050614ef0600083018561464a565b614efd602083018461464a565b9392505050565b6000819050919050565b6000614f29614f24614f1f84614f04565b61442b565b614388565b9050919050565b614f3981614f0e565b82525050565b600060c082019050614f54600083018961464a565b614f6160208301886144a5565b614f6e6040830187614f30565b614f7b6060830186614f30565b614f88608083018561464a565b614f9560a08301846144a5565b979650505050505050565b600080600060608486031215614fb957614fb8614320565b5b6000614fc786828701614ac5565b9350506020614fd886828701614ac5565b9250506040614fe986828701614ac5565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061502d82614388565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361505f5761505e614ff3565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b60006150c6602583614239565b91506150d18261506a565b604082019050919050565b600060208201905081810360008301526150f5816150b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615158602683614239565b9150615163826150fc565b604082019050919050565b600060208201905081810360008301526151878161514b565b9050919050565b60006040820190506151a360008301856144a5565b6151b060208301846144a5565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615213602483614239565b915061521e826151b7565b604082019050919050565b6000602082019050818103600083015261524281615206565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152a5602283614239565b91506152b082615249565b604082019050919050565b600060208201905081810360008301526152d481615298565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615337602583614239565b9150615342826152db565b604082019050919050565b600060208201905081810360008301526153668161532a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153c9602383614239565b91506153d48261536d565b604082019050919050565b600060208201905081810360008301526153f8816153bc565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061545b602983614239565b9150615466826153ff565b604082019050919050565b6000602082019050818103600083015261548a8161544e565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b60006154ed602383614239565b91506154f882615491565b604082019050919050565b6000602082019050818103600083015261551c816154e0565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e7366657260008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b600061557f602783614239565b915061558a82615523565b604082019050919050565b600060208201905081810360008301526155ae81615572565b9050919050565b60006155c082614388565b91506155cb83614388565b92508282039050818111156155e3576155e2614ff3565b5b92915050565b60006155f482614388565b91506155ff83614388565b925082820190508082111561561757615616614ff3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615653601b83614239565b915061565e8261561d565b602082019050919050565b6000602082019050818103600083015261568281615646565b9050919050565b600060a08201905061569e60008301886144a5565b6156ab6020830187614f30565b81810360408301526156bd8186614caf565b90506156cc606083018561464a565b6156d960808301846144a5565b9695505050505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061573f602183614239565b915061574a826156e3565b604082019050919050565b6000602082019050818103600083015261576e81615732565b9050919050565b600061578082614388565b915061578b83614388565b925082820261579981614388565b915082820484148315176157b0576157af614ff3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006157f182614388565b91506157fc83614388565b92508261580c5761580b6157b7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615873602183614239565b915061587e82615817565b604082019050919050565b600060208201905081810360008301526158a281615866565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202754c56166910552b71fc6230da1ff56e179618b7b29a6356a0f7148900d9c5864736f6c63430008110033608060405234801561001057600080fd5b50610ae8806100206000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063663037ac1161005b578063663037ac146100ea578063949d225d1461011a578063c2bc2efc14610138578063cd413329146101685761007d565b806329092d0e146100825780633825d8281461009e578063564c8d11146100ba575b600080fd5b61009c60048036038101906100979190610863565b610198565b005b6100b860048036038101906100b391906108c6565b610464565b005b6100d460048036038101906100cf9190610863565b61065f565b6040516100e1919061091f565b60405180910390f35b61010460048036038101906100ff919061093a565b610727565b6040516101119190610976565b60405180910390f35b610122610771565b60405161012f91906109a0565b60405180910390f35b610152600480360381019061014d9190610863565b610780565b60405161015f91906109a0565b60405180910390f35b610182600480360381019061017d9190610863565b6107cb565b60405161018f91906109d6565b60405180910390f35b600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561046157600060030160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff0219169055600060010160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000905560008060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600160008001805490506102e19190610a20565b905060008060000182815481106102fb576102fa610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600060020160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009055806000800184815481106103cc576103cb610a54565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000800180548061042857610427610a83565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b600060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156105055780600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061065b565b6001600060030160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600060010160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000800180549050600060020160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008001829080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b60008060030160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166106dc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050610722565b600060020160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b919050565b600080600001828154811061073f5761073e610a54565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60008060000180549050905090565b60008060010160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107f78361065f565b14159050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061083082610805565b9050919050565b61084081610825565b811461084b57600080fd5b50565b60008135905061085d81610837565b92915050565b60006020828403121561087957610878610800565b5b60006108878482850161084e565b91505092915050565b6000819050919050565b6108a381610890565b81146108ae57600080fd5b50565b6000813590506108c08161089a565b92915050565b600080604083850312156108dd576108dc610800565b5b60006108eb8582860161084e565b92505060206108fc858286016108b1565b9150509250929050565b6000819050919050565b61091981610906565b82525050565b60006020820190506109346000830184610910565b92915050565b6000602082840312156109505761094f610800565b5b600061095e848285016108b1565b91505092915050565b61097081610825565b82525050565b600060208201905061098b6000830184610967565b92915050565b61099a81610890565b82525050565b60006020820190506109b56000830184610991565b92915050565b60008115159050919050565b6109d0816109bb565b82525050565b60006020820190506109eb60008301846109c7565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610a2b82610890565b9150610a3683610890565b9250828203905081811115610a4e57610a4d6109f1565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea2646970667358221220649fae7ee052c866d3749a76014a5f21ac27b7d1f850e51b10ab547c4c44123464736f6c63430008110033

Deployed Bytecode

0x60806040526004361061026b5760003560e01c806370a0823111610144578063a9059cbb116100b6578063dc13b31c1161007a578063dc13b31c146108cf578063dd62ed3e146108fa578063e68167aa14610937578063e7dad4f914610962578063ec11ba341461099f578063f2fde38b146109b657610272565b8063a9059cbb146107fe578063b2abbbc41461083b578063c9567bf914610864578063d5f394881461087b578063d9058bd5146108a657610272565b80638da5cb5b116101085780638da5cb5b1461070057806395d89b411461072b57806395f4c958146107565780639b0e2e861461076d578063a2ae74f414610796578063a457c2d7146107c157610272565b806370a0823114610631578063715018a61461066e578063794ac1491461068557806381230a83146106ae57806385d4787b146106d757610272565b8063313ce567116101dd57806348fad638116101a157806348fad638146105315780634b94f50e1461055c57806350faa48f1461058757806351bc3c85146105b25780635342acb4146105c957806354a5df1f1461060657610272565b8063313ce5671461044a5780633950935114610475578063441d801f146104b257806347062402146104db578063482e53ff1461050657610272565b8063139196f71161022f578063139196f7146103385780631694505e1461036157806318160ddd1461038c5780631f61fd5a146103b757806323b872dd146103e25780632b14ca561461041f57610272565b806306e99fef1461027757806306fdde031461028e57806307ebec27146102b957806308003f78146102e4578063095ea7b3146102fb57610272565b3661027257005b600080fd5b34801561028357600080fd5b5061028c6109df565b005b34801561029a57600080fd5b506102a3610ba5565b6040516102b091906142be565b60405180910390f35b3480156102c557600080fd5b506102ce610c37565b6040516102db91906142fb565b60405180910390f35b3480156102f057600080fd5b506102f9610c4a565b005b34801561030757600080fd5b50610322600480360381019061031d91906143be565b610cf0565b60405161032f91906142fb565b60405180910390f35b34801561034457600080fd5b5061035f600480360381019061035a91906143fe565b610d0e565b005b34801561036d57600080fd5b50610376610f8c565b604051610383919061448a565b60405180910390f35b34801561039857600080fd5b506103a1610fb2565b6040516103ae91906144b4565b60405180910390f35b3480156103c357600080fd5b506103cc610fbc565b6040516103d991906144b4565b60405180910390f35b3480156103ee57600080fd5b50610409600480360381019061040491906144cf565b610fc2565b60405161041691906142fb565b60405180910390f35b34801561042b57600080fd5b5061043461109b565b60405161044191906144b4565b60405180910390f35b34801561045657600080fd5b5061045f6110a1565b60405161046c919061453e565b60405180910390f35b34801561048157600080fd5b5061049c600480360381019061049791906143be565b6110b8565b6040516104a991906142fb565b60405180910390f35b3480156104be57600080fd5b506104d960048036038101906104d491906145ea565b61116b565b005b3480156104e757600080fd5b506104f0611210565b6040516104fd91906144b4565b60405180910390f35b34801561051257600080fd5b5061051b611216565b60405161052891906144b4565b60405180910390f35b34801561053d57600080fd5b5061054661121c565b60405161055391906144b4565b60405180910390f35b34801561056857600080fd5b50610571611222565b60405161057e91906144b4565b60405180910390f35b34801561059357600080fd5b5061059c611465565b6040516105a99190614659565b60405180910390f35b3480156105be57600080fd5b506105c761148b565b005b3480156105d557600080fd5b506105f060048036038101906105eb91906143fe565b6114c3565b6040516105fd91906142fb565b60405180910390f35b34801561061257600080fd5b5061061b611519565b60405161062891906144b4565b60405180910390f35b34801561063d57600080fd5b50610658600480360381019061065391906143fe565b61151f565b60405161066591906144b4565b60405180910390f35b34801561067a57600080fd5b50610683611568565b005b34801561069157600080fd5b506106ac60048036038101906106a79190614674565b6116bb565b005b3480156106ba57600080fd5b506106d560048036038101906106d091906146a1565b61176d565b005b3480156106e357600080fd5b506106fe60048036038101906106f9919061481f565b611814565b005b34801561070c57600080fd5b506107156118b7565b6040516107229190614659565b60405180910390f35b34801561073757600080fd5b506107406118e0565b60405161074d91906142be565b60405180910390f35b34801561076257600080fd5b5061076b611972565b005b34801561077957600080fd5b50610794600480360381019061078f919061481f565b61197c565b005b3480156107a257600080fd5b506107ab611a1f565b6040516107b891906142fb565b60405180910390f35b3480156107cd57600080fd5b506107e860048036038101906107e391906143be565b611a32565b6040516107f591906142fb565b60405180910390f35b34801561080a57600080fd5b50610825600480360381019061082091906143be565b611aff565b60405161083291906142fb565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d9190614868565b611b1d565b005b34801561087057600080fd5b50610879611bbc565b005b34801561088757600080fd5b50610890612115565b60405161089d9190614659565b60405180910390f35b3480156108b257600080fd5b506108cd60048036038101906108c891906146a1565b61213b565b005b3480156108db57600080fd5b506108e46121e2565b6040516108f191906144b4565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190614895565b6121e8565b60405161092e91906144b4565b60405180910390f35b34801561094357600080fd5b5061094c61226f565b60405161095991906144b4565b60405180910390f35b34801561096e57600080fd5b50610989600480360381019061098491906143fe565b612484565b60405161099691906142fb565b60405180910390f35b3480156109ab57600080fd5b506109b46124da565b005b3480156109c257600080fd5b506109dd60048036038101906109d891906143fe565b6125e3565b005b6109e76127a4565b73ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610a965750610a456127a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610af55750610aa46127a4565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b90614921565b60405180910390fd5b6000479050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ba1573d6000803e3d6000fd5b5050565b6060600b8054610bb490614970565b80601f0160208091040260200160405190810160405280929190818152602001828054610be090614970565b8015610c2d5780601f10610c0257610100808354040283529160200191610c2d565b820191906000526020600020905b815481529060010190602001808311610c1057829003601f168201915b5050505050905090565b601460019054906101000a900460ff1681565b601854421015610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690614a13565b60405180910390fd5b601460019054906101000a900460ff16610cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd590614aa5565b60405180910390fd5b610ce66127ac565b610cee6127b6565b565b6000610d04610cfd6127a4565b8484612974565b6001905092915050565b610d166127a4565b73ffffffffffffffffffffffffffffffffffffffff16601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610dc55750610d746127a4565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80610e245750610dd36127a4565b73ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610e63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5a90614921565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ea39190614659565b602060405180830381865afa158015610ec0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee49190614ada565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610f43929190614b07565b6020604051808303816000875af1158015610f62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f869190614b45565b50505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600e54905090565b60155481565b6000610fcf848484612b3d565b61109084610fdb6127a4565b61108b856040518060600160405280602881526020016158aa60289139600860008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006110416127a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362e9092919063ffffffff16565b612974565b600190509392505050565b60115481565b6000600d60009054906101000a900460ff16905090565b60006111616110c56127a4565b8461115c85600860006110d66127a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369290919063ffffffff16565b612974565b6001905092915050565b6111736127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611200576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f790614bbe565b60405180910390fd5b61120b8383836136f0565b505050565b60105481565b60165481565b60185481565b600080600267ffffffffffffffff8111156112405761123f6146e1565b5b60405190808252806020026020018201604052801561126e5781602001602082028036833780820191505090505b509050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156112de573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113029190614bf3565b8160008151811061131657611315614c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050308160018151811061136557611364614c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d06ca61f601354836040518363ffffffff1660e01b81526004016113fe929190614d0d565b600060405180830381865afa15801561141b573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f820116820180604052508101906114449190614e00565b60018151811061145757611456614c20565b5b602002602001015191505090565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114963061151f565b905060008111156114c057600f60009054906101000a900460ff166114bf576114be8161379b565b5b5b50565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60135481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6115706127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146115fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f490614bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116c36127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174790614bbe565b60405180910390fd5b80601460016101000a81548160ff02191690831515021790555050565b6117756127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611802576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117f990614bbe565b60405180910390fd5b81601081905550806011819055505050565b61181c6127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a090614bbe565b60405180910390fd5b6118b4816001613acf565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600c80546118ef90614970565b80601f016020809104026020016040519081016040528092919081815260200182805461191b90614970565b80156119685780601f1061193d57610100808354040283529160200191611968565b820191906000526020600020905b81548152906001019060200180831161194b57829003601f168201915b5050505050905090565b61197a613bc6565b565b6119846127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a0890614bbe565b60405180910390fd5b611a1c816000613acf565b50565b601460009054906101000a900460ff1681565b6000611af5611a3f6127a4565b84611af0856040518060600160405280602581526020016158d26025913960086000611a696127a4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461362e9092919063ffffffff16565b612974565b6001905092915050565b6000611b13611b0c6127a4565b8484612b3d565b6001905092915050565b611b256127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba990614bbe565b60405180910390fd5b8060138190555050565b611bc46127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c51576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4890614bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd990614ebb565b60405180910390fd5b611d1130600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600e54612974565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da29190614bf3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e4f9190614bf3565b6040518363ffffffff1660e01b8152600401611e6c929190614edb565b6020604051808303816000875af1158015611e8b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611eaf9190614bf3565b600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611f383061151f565b600080611f436118b7565b426040518863ffffffff1660e01b8152600401611f6596959493929190614f3f565b60606040518083038185885af1158015611f83573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fa89190614fa0565b505050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161204a929190614b07565b6020604051808303816000875af1158015612069573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208d9190614b45565b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426018819055506001601460006101000a81548160ff021916908315150217905550565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6121436127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c790614bbe565b60405180910390fd5b81601581905550806016819055505050565b60175481565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000806000905060005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230a9190614ada565b81101561247c576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b815260040161236e91906144b4565b602060405180830381865afa15801561238b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123af9190614bf3565b90506000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c2bc2efc836040518263ffffffff1660e01b815260040161240e9190614659565b602060405180830381865afa15801561242b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061244f9190614ada565b905080421061246757838061246390615022565b9450505b5050808061247490615022565b915050612279565b508091505090565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6124e26127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461256f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256690614bbe565b60405180910390fd5b601460009054906101000a900460ff166125be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b5906150dc565b60405180910390fd5b6125c6613bc6565b6000601460006101000a81548160ff021916908315150217905550565b6125eb6127a4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612678576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161266f90614bbe565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036126e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126de9061516e565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6127b4613bc6565b565b6001600f60006101000a81548160ff02191690831515021790555060006127fe600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661151f565b9050600061281760165483613f3490919063ffffffff16565b905060008111156129555761284e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1682613f7e565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156128b857600080fd5b505af11580156128cc573d6000803e3d6000fd5b505050506128e58160175461369290919063ffffffff16565b601781905550612913612904603c60155461410790919063ffffffff16565b4261369290919063ffffffff16565b6018819055507f8bc81353cf6671d259d22783e39ed930583c86f3f4cf7e981298e6a872dfb15d8160185460405161294c92919061518e565b60405180910390a15b50506000600f60006101000a81548160ff021916908315150217905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129da90615229565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a49906152bb565b60405180910390fd5b80600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612b3091906144b4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba39061534d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612c1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c12906153df565b60405180910390fd5b60008111612c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5590615471565b60405180910390fd5b600080600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612d055750600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612d445750612d146118b7565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612d835750612d536118b7565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b9050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614158015612e315750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b8015612e6957503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612ea157503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156133eb5780156133ea57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612fde57601460009054906101000a900460ff1615612fb257612f1e613bc6565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82885426040518363ffffffff1660e01b8152600401612f7b929190614b07565b600060405180830381600087803b158015612f9557600080fd5b505af1158015612fa9573d6000803e3d6000fd5b50505050612fdd565b612fda6064612fcc6010548661410790919063ffffffff16565b613f3490919063ffffffff16565b91505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156130895750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b1561325457600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156131325750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613171576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161316890615503565b60405180910390fd5b601460009054906101000a900460ff161561318d5760006131b6565b6131b560646131a76011548661410790919063ffffffff16565b613f3490919063ffffffff16565b5b915060185442101580156131d65750601460019054906101000a900460ff165b80156131ef5750601460009054906101000a900460ff16155b15613201576131fc6127b6565b613253565b600061320c3061151f565b90506000811115613251576000613221611222565b90508082101580156132405750600f60009054906101000a900460ff16155b1561324f5761324e8161379b565b5b505b505b5b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156133005750600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156133e957600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133a95750600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6133e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133df90615595565b60405180910390fd5b5b5b5b6000613400838561418190919063ffffffff16565b905061345484600760008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461418190919063ffffffff16565b600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506134e981600760008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369290919063ffffffff16565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061357e83600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369290919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161361e91906144b4565b60405180910390a3505050505050565b6000838311158290613676576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161366d91906142be565b60405180910390fd5b506000838561368591906155b5565b9050809150509392505050565b60008082846136a191906155e9565b9050838110156136e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016136dd90615669565b60405180910390fd5b8091505092915050565b60005b8383905081101561379557600084848381811061371357613712614c20565b5b905060200201602081019061372891906143fe565b905082600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050808061378d90615022565b9150506136f3565b50505050565b6000600267ffffffffffffffff8111156137b8576137b76146e1565b5b6040519080825280602002602001820160405280156137e65781602001602082028036833780820191505090505b50905030816000815181106137fe576137fd614c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156138a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906138c99190614bf3565b816001815181106138dd576138dc614c20565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061394430600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612974565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016139a8959493929190615689565b600060405180830381600087803b1580156139c257600080fd5b505af11580156139d6573d6000803e3d6000fd5b50505050600047905060006139f5600283613f3490919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613a5f573d6000803e3d6000fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613ac8573d6000803e3d6000fd5b5050505050565b60005b8251811015613bc1576000838281518110613af057613aef614c20565b5b602002602001015190508215613b5d576001600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550613bad565b600960008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b508080613bb990615022565b915050613ad2565b505050565b601460009054906101000a900460ff1615613f325760005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c4b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c6f9190614ada565b811015613f30576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac836040518263ffffffff1660e01b8152600401613cd391906144b4565b602060405180830381865afa158015613cf0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d149190614bf3565b90506000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811115613e8e57613db581600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461418190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e4a81600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461369290919063ffffffff16565b600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b8152600401613ee99190614659565b600060405180830381600087803b158015613f0357600080fd5b505af1158015613f17573d6000803e3d6000fd5b5050505050508080613f2890615022565b915050613bde565b505b565b6000613f7683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506141cb565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613fed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613fe490615755565b60405180910390fd5b61400281600e5461418190919063ffffffff16565b600e8190555061405a81600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461418190919063ffffffff16565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516140fb91906144b4565b60405180910390a35050565b6000808303614119576000905061417b565b600082846141279190615775565b905082848261413691906157e6565b14614176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161416d90615889565b60405180910390fd5b809150505b92915050565b60006141c383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061362e565b905092915050565b60008083118290614212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161420991906142be565b60405180910390fd5b506000838561422191906157e6565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561426857808201518184015260208101905061424d565b60008484015250505050565b6000601f19601f8301169050919050565b60006142908261422e565b61429a8185614239565b93506142aa81856020860161424a565b6142b381614274565b840191505092915050565b600060208201905081810360008301526142d88184614285565b905092915050565b60008115159050919050565b6142f5816142e0565b82525050565b600060208201905061431060008301846142ec565b92915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006143558261432a565b9050919050565b6143658161434a565b811461437057600080fd5b50565b6000813590506143828161435c565b92915050565b6000819050919050565b61439b81614388565b81146143a657600080fd5b50565b6000813590506143b881614392565b92915050565b600080604083850312156143d5576143d4614320565b5b60006143e385828601614373565b92505060206143f4858286016143a9565b9150509250929050565b60006020828403121561441457614413614320565b5b600061442284828501614373565b91505092915050565b6000819050919050565b600061445061444b6144468461432a565b61442b565b61432a565b9050919050565b600061446282614435565b9050919050565b600061447482614457565b9050919050565b61448481614469565b82525050565b600060208201905061449f600083018461447b565b92915050565b6144ae81614388565b82525050565b60006020820190506144c960008301846144a5565b92915050565b6000806000606084860312156144e8576144e7614320565b5b60006144f686828701614373565b935050602061450786828701614373565b9250506040614518868287016143a9565b9150509250925092565b600060ff82169050919050565b61453881614522565b82525050565b6000602082019050614553600083018461452f565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261457e5761457d614559565b5b8235905067ffffffffffffffff81111561459b5761459a61455e565b5b6020830191508360208202830111156145b7576145b6614563565b5b9250929050565b6145c7816142e0565b81146145d257600080fd5b50565b6000813590506145e4816145be565b92915050565b60008060006040848603121561460357614602614320565b5b600084013567ffffffffffffffff81111561462157614620614325565b5b61462d86828701614568565b93509350506020614640868287016145d5565b9150509250925092565b6146538161434a565b82525050565b600060208201905061466e600083018461464a565b92915050565b60006020828403121561468a57614689614320565b5b6000614698848285016145d5565b91505092915050565b600080604083850312156146b8576146b7614320565b5b60006146c6858286016143a9565b92505060206146d7858286016143a9565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61471982614274565b810181811067ffffffffffffffff82111715614738576147376146e1565b5b80604052505050565b600061474b614316565b90506147578282614710565b919050565b600067ffffffffffffffff821115614777576147766146e1565b5b602082029050602081019050919050565b600061479b6147968461475c565b614741565b905080838252602082019050602084028301858111156147be576147bd614563565b5b835b818110156147e757806147d38882614373565b8452602084019350506020810190506147c0565b5050509392505050565b600082601f83011261480657614805614559565b5b8135614816848260208601614788565b91505092915050565b60006020828403121561483557614834614320565b5b600082013567ffffffffffffffff81111561485357614852614325565b5b61485f848285016147f1565b91505092915050565b60006020828403121561487e5761487d614320565b5b600061488c848285016143a9565b91505092915050565b600080604083850312156148ac576148ab614320565b5b60006148ba85828601614373565b92505060206148cb85828601614373565b9150509250929050565b7f63616c6c6572206973206e6f7420746865206f776e6572000000000000000000600082015250565b600061490b601783614239565b9150614916826148d5565b602082019050919050565b6000602082019050818103600083015261493a816148fe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061498857607f821691505b60208210810361499b5761499a614941565b5b50919050565b7f4e657874206275726e2074696d65206973206e6f7420647565207965742c206260008201527f652070617469656e740000000000000000000000000000000000000000000000602082015250565b60006149fd602983614239565b9150614a08826149a1565b604082019050919050565b60006020820190508181036000830152614a2c816149f0565b9050919050565b7f4275726e696e6720746f6b656e732069732063757272656e746c79206469736160008201527f626c656400000000000000000000000000000000000000000000000000000000602082015250565b6000614a8f602483614239565b9150614a9a82614a33565b604082019050919050565b60006020820190508181036000830152614abe81614a82565b9050919050565b600081519050614ad481614392565b92915050565b600060208284031215614af057614aef614320565b5b6000614afe84828501614ac5565b91505092915050565b6000604082019050614b1c600083018561464a565b614b2960208301846144a5565b9392505050565b600081519050614b3f816145be565b92915050565b600060208284031215614b5b57614b5a614320565b5b6000614b6984828501614b30565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614ba8602083614239565b9150614bb382614b72565b602082019050919050565b60006020820190508181036000830152614bd781614b9b565b9050919050565b600081519050614bed8161435c565b92915050565b600060208284031215614c0957614c08614320565b5b6000614c1784828501614bde565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614c848161434a565b82525050565b6000614c968383614c7b565b60208301905092915050565b6000602082019050919050565b6000614cba82614c4f565b614cc48185614c5a565b9350614ccf83614c6b565b8060005b83811015614d00578151614ce78882614c8a565b9750614cf283614ca2565b925050600181019050614cd3565b5085935050505092915050565b6000604082019050614d2260008301856144a5565b8181036020830152614d348184614caf565b90509392505050565b600067ffffffffffffffff821115614d5857614d576146e1565b5b602082029050602081019050919050565b6000614d7c614d7784614d3d565b614741565b90508083825260208201905060208402830185811115614d9f57614d9e614563565b5b835b81811015614dc85780614db48882614ac5565b845260208401935050602081019050614da1565b5050509392505050565b600082601f830112614de757614de6614559565b5b8151614df7848260208601614d69565b91505092915050565b600060208284031215614e1657614e15614320565b5b600082015167ffffffffffffffff811115614e3457614e33614325565b5b614e4084828501614dd2565b91505092915050565b7f556e69737761705632506169722068617320616c7265616479206265656e207360008201527f6574000000000000000000000000000000000000000000000000000000000000602082015250565b6000614ea5602283614239565b9150614eb082614e49565b604082019050919050565b60006020820190508181036000830152614ed481614e98565b9050919050565b6000604082019050614ef0600083018561464a565b614efd602083018461464a565b9392505050565b6000819050919050565b6000614f29614f24614f1f84614f04565b61442b565b614388565b9050919050565b614f3981614f0e565b82525050565b600060c082019050614f54600083018961464a565b614f6160208301886144a5565b614f6e6040830187614f30565b614f7b6060830186614f30565b614f88608083018561464a565b614f9560a08301846144a5565b979650505050505050565b600080600060608486031215614fb957614fb8614320565b5b6000614fc786828701614ac5565b9350506020614fd886828701614ac5565b9250506040614fe986828701614ac5565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061502d82614388565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361505f5761505e614ff3565b5b600182019050919050565b7f426f7420736e6970696e672068617320616c7265616479206265656e2064697360008201527f61626c6564000000000000000000000000000000000000000000000000000000602082015250565b60006150c6602583614239565b91506150d18261506a565b604082019050919050565b600060208201905081810360008301526150f5816150b9565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000615158602683614239565b9150615163826150fc565b604082019050919050565b600060208201905081810360008301526151878161514b565b9050919050565b60006040820190506151a360008301856144a5565b6151b060208301846144a5565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615213602483614239565b915061521e826151b7565b604082019050919050565b6000602082019050818103600083015261524281615206565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006152a5602283614239565b91506152b082615249565b604082019050919050565b600060208201905081810360008301526152d481615298565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615337602583614239565b9150615342826152db565b604082019050919050565b600060208201905081810360008301526153668161532a565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006153c9602383614239565b91506153d48261536d565b604082019050919050565b600060208201905081810360008301526153f8816153bc565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061545b602983614239565b9150615466826153ff565b604082019050919050565b6000602082019050818103600083015261548a8161544e565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f2073656c6c20746f6b60008201527f656e730000000000000000000000000000000000000000000000000000000000602082015250565b60006154ed602383614239565b91506154f882615491565b604082019050919050565b6000602082019050818103600083015261551c816154e0565b9050919050565b7f626f747320617265206e6f7420616c6c6f77656420746f207472616e7366657260008201527f20746f6b656e7300000000000000000000000000000000000000000000000000602082015250565b600061557f602783614239565b915061558a82615523565b604082019050919050565b600060208201905081810360008301526155ae81615572565b9050919050565b60006155c082614388565b91506155cb83614388565b92508282039050818111156155e3576155e2614ff3565b5b92915050565b60006155f482614388565b91506155ff83614388565b925082820190508082111561561757615616614ff3565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615653601b83614239565b915061565e8261561d565b602082019050919050565b6000602082019050818103600083015261568281615646565b9050919050565b600060a08201905061569e60008301886144a5565b6156ab6020830187614f30565b81810360408301526156bd8186614caf565b90506156cc606083018561464a565b6156d960808301846144a5565b9695505050505050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061573f602183614239565b915061574a826156e3565b604082019050919050565b6000602082019050818103600083015261576e81615732565b9050919050565b600061578082614388565b915061578b83614388565b925082820261579981614388565b915082820484148315176157b0576157af614ff3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006157f182614388565b91506157fc83614388565b92508261580c5761580b6157b7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615873602183614239565b915061587e82615817565b604082019050919050565b600060208201905081810360008301526158a281615866565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202754c56166910552b71fc6230da1ff56e179618b7b29a6356a0f7148900d9c5864736f6c63430008110033

Deployed Bytecode Sourcemap

11503:13535:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24639:146;;;;;;;;;;;;;:::i;:::-;;13556:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12818:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17619:266;;;;;;;;;;;;;:::i;:::-;;14389:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24793:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11847:106;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13833:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12857:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14558:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12662:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13742:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14879:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16484:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12630:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12907:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13014:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24200:264;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11960:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23147:267;;;;;;;;;;;;;:::i;:::-;;19215:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12726:43;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13936:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6577:148;;;;;;;;;;;;;:::i;:::-;;17504:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15382:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15857:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6363:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13647:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23071:70;;;;;;;;;;;;;:::i;:::-;;15993:131;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12777:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15105:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14063:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24472:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18443:764;;;;;;;;;;;;;:::i;:::-;;12696:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16652:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12965:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14238:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22681:382;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15740:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15512:219;;;;;;;;;;;;;:::i;:::-;;6733:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24639:146;13114:12;:10;:12::i;:::-;13102:24;;:8;;;;;;;;;;;:24;;;:50;;;;13140:12;:10;:12::i;:::-;13130:22;;:6;;;;;;;;;;;:22;;;13102:50;:76;;;;13166:12;:10;:12::i;:::-;13156:22;;:6;;;;;;;;;;;:22;;;13102:76;13094:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;24686:18:::1;24707:21;24686:42;;24747:8;;;;;;;;;;;24739:26;;:38;24766:10;24739:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;24675:110;24639:146::o:0;13556:83::-;13593:13;13626:5;13619:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13556:83;:::o;12818:32::-;;;;;;;;;;;;;:::o;17619:266::-;17688:26;;17669:15;:45;;17661:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;17779:13;;;;;;;;;;;17771:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;17834:3;:1;:3::i;:::-;17848:29;:27;:29::i;:::-;17619:266::o;14389:161::-;14464:4;14481:39;14490:12;:10;:12::i;:::-;14504:7;14513:6;14481:8;:39::i;:::-;14538:4;14531:11;;14389:161;;;;:::o;24793:242::-;13114:12;:10;:12::i;:::-;13102:24;;:8;;;;;;;;;;;:24;;;:50;;;;13140:12;:10;:12::i;:::-;13130:22;;:6;;;;;;;;;;;:22;;;13102:50;:76;;;;13166:12;:10;:12::i;:::-;13156:22;;:6;;;;;;;;;;;:22;;;13102:76;13094:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;24871:17:::1;24898:15;24871:43;;24925:15;24943:10;:20;;;24972:4;24943:35;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24925:53;;24989:10;:19;;;25009:8;;;;;;;;;;;25019:7;24989:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;24860:175;;24793:242:::0;:::o;11847:106::-;;;;;;;;;;;;;:::o;13833:95::-;13886:7;13913;;13906:14;;13833:95;:::o;12857:41::-;;;;:::o;14558:313::-;14656:4;14673:36;14683:6;14691:9;14702:6;14673:9;:36::i;:::-;14720:121;14729:6;14737:12;:10;:12::i;:::-;14751:89;14789:6;14751:89;;;;;;;;;;;;;;;;;:11;:19;14763:6;14751:19;;;;;;;;;;;;;;;:33;14771:12;:10;:12::i;:::-;14751:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;14720:8;:121::i;:::-;14859:4;14852:11;;14558:313;;;;;:::o;12662:27::-;;;;:::o;13742:83::-;13783:5;13808:9;;;;;;;;;;;13801:16;;13742:83;:::o;14879:218::-;14967:4;14984:83;14993:12;:10;:12::i;:::-;15007:7;15016:50;15055:10;15016:11;:25;15028:12;:10;:12::i;:::-;15016:25;;;;;;;;;;;;;;;:34;15042:7;15016:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;14984:8;:83::i;:::-;15085:4;15078:11;;14879:218;;;;:::o;16484:161::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16596:41:::1;16609:9;;16620:16;16596:12;:41::i;:::-;16484:161:::0;;;:::o;12630:25::-;;;;:::o;12907:40::-;;;;:::o;13014:38::-;;;;:::o;24200:264::-;24246:7;24267:21;24305:1;24291:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24267:40;;24328:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24318:4;24323:1;24318:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24379:4;24361;24366:1;24361:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24402:15;;;;;;;;;;;:29;;;24432:14;;24448:4;24402:51;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24454:1;24402:54;;;;;;;;:::i;:::-;;;;;;;;24395:61;;;24200:264;:::o;11960:38::-;;;;;;;;;;;;;:::o;23147:267::-;23189:28;23220:24;23238:4;23220:9;:24::i;:::-;23189:55;;23282:1;23259:20;:24;23255:152;;;23305:16;;;;;;;;;;;23300:96;;23342:38;23359:20;23342:16;:38::i;:::-;23300:96;23255:152;23178:236;23147:267::o;19215:124::-;19280:4;19304:18;:27;19323:7;19304:27;;;;;;;;;;;;;;;;;;;;;;;;;19297:34;;19215:124;;;:::o;12726:43::-;;;;:::o;13936:119::-;14002:7;14029:9;:18;14039:7;14029:18;;;;;;;;;;;;;;;;14022:25;;13936:119;;;:::o;6577:148::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6684:1:::1;6647:40;;6668:6;::::0;::::1;;;;;;;;6647:40;;;;;;;;;;;;6715:1;6698:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;6577:148::o:0;17504:107::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17595:8:::1;17579:13;;:24;;;;;;;;;;;;;;;;;;17504:107:::0;:::o;15382:122::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15468:3:::1;15459:6;:12;;;;15492:4;15482:7;:14;;;;15382:122:::0;;:::o;15857:128::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15941:36:::1;15961:9;15972:4;15941:19;:36::i;:::-;15857:128:::0;:::o;6363:79::-;6401:7;6428:6;;;;;;;;;;;6421:13;;6363:79;:::o;13647:87::-;13686:13;13719:7;13712:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13647:87;:::o;23071:70::-;23118:15;:13;:15::i;:::-;23071:70::o;15993:131::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16079:37:::1;16099:9;16110:5;16079:19;:37::i;:::-;15993:131:::0;:::o;12777:34::-;;;;;;;;;;;;;:::o;15105:269::-;15198:4;15215:129;15224:12;:10;:12::i;:::-;15238:7;15247:96;15286:15;15247:96;;;;;;;;;;;;;;;;;:11;:25;15259:12;:10;:12::i;:::-;15247:25;;;;;;;;;;;;;;;:34;15273:7;15247:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15215:8;:129::i;:::-;15362:4;15355:11;;15105:269;;;;:::o;14063:167::-;14141:4;14158:42;14168:12;:10;:12::i;:::-;14182:9;14193:6;14158:9;:42::i;:::-;14218:4;14211:11;;14063:167;;;;:::o;24472:122::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24571:15:::1;24554:14;:32;;;;24472:122:::0;:::o;18443:764::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18528:1:::1;18506:24;;:10;;;;;;;;;;;:24;;;18498:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18579:58;18596:4;18611:15;;;;;;;;;;;18629:7;;18579:8;:58::i;:::-;18679:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18661:55;;;18725:4;18732:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18661:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18648:10;;:107;;;;;;;;;;;;;;;;;;18766:15;;;;;;;;;;;:31;;;18805:21;18850:4;18870:24;18888:4;18870:9;:24::i;:::-;18909:1;18925::::0;18941:7:::1;:5;:7::i;:::-;18963:15;18766:213;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;18997:10;;;;;;;;;;;18990:26;;;19025:15;;;;;;;;;;;19043:14;18990:68;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19093:10;;;;;;;;;;;19069:6;;:35;;;;;;;;;;;;;;;;;;19144:15;19115:26;:44;;;;19195:4;19170:22;;:29;;;;;;;;;;;;;;;;;;18443:764::o:0;12696:23::-;;;;;;;;;;;;;:::o;16652:205::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16783:18:::1;16759:21;:42;;;;16835:14;16812:20;:37;;;;16652:205:::0;;:::o;12965:42::-;;;;:::o;14238:143::-;14319:7;14346:11;:18;14358:5;14346:18;;;;;;;;;;;;;;;:27;14365:7;14346:27;;;;;;;;;;;;;;;;14339:34;;14238:143;;;;:::o;22681:382::-;22731:7;22751:13;22767:1;22751:17;;22783:9;22779:254;22801:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22797:1;:24;22779:254;;;22843:14;22860:13;;;;;;;;;;;:27;;;22888:1;22860:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22843:47;;22905:14;22922:13;;;;;;;;;;;:17;;;22940:6;22922:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22905:42;;22985:9;22965:15;:29;22962:59;;23014:7;;;;;:::i;:::-;;;;22962:59;22828:205;;22823:3;;;;;:::i;:::-;;;;22779:254;;;;23050:5;23043:12;;;22681:382;:::o;15740:109::-;15801:4;15825:10;:16;15836:4;15825:16;;;;;;;;;;;;;;;;;;;;;;;;;15818:23;;15740:109;;;:::o;15512:219::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15593:22:::1;;;;;;;;;;;15585:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15667:15;:13;:15::i;:::-;15718:5;15693:22;;:30;;;;;;;;;;;;;;;;;;15512:219::o:0;6733:244::-;6500:12;:10;:12::i;:::-;6490:22;;:6;;;;;;;;;;:22;;;6482:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6842:1:::1;6822:22;;:8;:22;;::::0;6814:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;6932:8;6903:38;;6924:6;::::0;::::1;;;;;;;;6903:38;;;;;;;;;;;;6961:8;6952:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;6733:244:::0;:::o;2705:98::-;2758:7;2785:10;2778:17;;2705:98;:::o;24157:37::-;24177:15;:13;:15::i;:::-;24157:37::o;16865:631::-;11671:4;11652:16;;:23;;;;;;;;;;;;;;;;;;16935:14:::1;16952:21;16962:10;;;;;;;;;;;16952:9;:21::i;:::-;16935:38;;16984:20;17007:35;17021:20;;17007:9;:13;;:35;;;;:::i;:::-;16984:58;;17074:1;17056:15;:19;17053:436;;;17159:34;17165:10;;;;;;;;;;;17177:15;17159:5;:34::i;:::-;17208:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17262:44;17290:15;17262:23;;:27;;:44;;;;:::i;:::-;17236:23;:70;;;;17350:50;17370:29;17396:2;17370:21;;:25;;:29;;;;:::i;:::-;17350:15;:19;;:50;;;;:::i;:::-;17321:26;:79;;;;17420:57;17433:15;17450:26;;17420:57;;;;;;;:::i;:::-;;;;;;;;17053:436;16924:572;;11717:5:::0;11698:16;;:24;;;;;;;;;;;;;;;;;;16865:631::o;19347:337::-;19457:1;19440:19;;:5;:19;;;19432:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19538:1;19519:21;;:7;:21;;;19511:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19622:6;19592:11;:18;19604:5;19592:18;;;;;;;;;;;;;;;:27;19611:7;19592:27;;;;;;;;;;;;;;;:36;;;;19660:7;19644:32;;19653:5;19644:32;;;19669:6;19644:32;;;;;;:::i;:::-;;;;;;;;19347:337;;;:::o;19692:2427::-;19796:1;19780:18;;:4;:18;;;19772:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;19873:1;19859:16;;:2;:16;;;19851:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;19943:1;19934:6;:10;19926:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;20001:17;20033:13;20050:18;:24;20069:4;20050:24;;;;;;;;;;;;;;;;;;;;;;;;;20049:25;:52;;;;;20079:18;:22;20098:2;20079:22;;;;;;;;;;;;;;;;;;;;;;;;;20078:23;20049:52;:71;;;;;20113:7;:5;:7::i;:::-;20105:15;;:4;:15;;;;20049:71;:88;;;;;20130:7;:5;:7::i;:::-;20124:13;;:2;:13;;;;20049:88;20033:104;;20159:8;;;;;;;;;;;20151:16;;:4;:16;;;;:34;;;;;20177:8;;;;;;;;;;;20171:14;;:2;:14;;;;20151:34;:59;;;;;20205:4;20189:21;;:4;:21;;;;20151:59;:82;;;;;20228:4;20214:19;;:2;:19;;;;20151:82;20148:1657;;;20253:8;20250:1544;;;20312:10;;;;;;;;;;;20304:18;;:4;:18;;;20300:320;;20350:22;;;;;;;;;;;20347:254;;;20401:15;:13;:15::i;:::-;20443:13;;;;;;;;;;;:17;;;20461:2;20465:15;20443:38;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20347:254;;;20550:27;20573:3;20550:18;20561:6;;20550;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;20538:39;;20347:254;20300:320;20650:10;;;;;;;;;;;20642:18;;:4;:18;;;;:38;;;;;20670:10;;;;;;;;;;;20664:16;;:2;:16;;;20642:38;20638:948;;;20714:10;:16;20725:4;20714:16;;;;;;;;;;;;;;;;;;;;;;;;;20713:17;:36;;;;;20735:10;:14;20746:2;20735:14;;;;;;;;;;;;;;;;;;;;;;;;;20734:15;20713:36;20705:84;;;;;;;;;;;;:::i;:::-;;;;;;;;;20833:22;;;;;;;;;;;20832:23;:58;;20889:1;20832:58;;;20858:28;20882:3;20858:19;20869:7;;20858:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;20832:58;20820:70;;20935:26;;20916:15;:45;;:62;;;;;20965:13;;;;;;;;;;;20916:62;:89;;;;;20983:22;;;;;;;;;;;20982:23;20916:89;20913:654;;;21038:29;:27;:29::i;:::-;20913:654;;;21124:28;21155:24;21173:4;21155:9;:24::i;:::-;21124:55;;21233:1;21210:20;:24;21206:334;;;21271:19;21293:15;:13;:15::i;:::-;21271:37;;21371:11;21347:20;:35;;:56;;;;;21387:16;;;;;;;;;;;21386:17;21347:56;21343:166;;;21444:29;21461:11;21444:16;:29::i;:::-;21343:166;21236:304;21206:334;21097:470;20913:654;20638:948;21616:10;;;;;;;;;;;21608:18;;:4;:18;;;;:38;;;;;21636:10;;;;;;;;;;;21630:16;;:2;:16;;;;21608:38;21604:175;;;21680:10;:16;21691:4;21680:16;;;;;;;;;;;;;;;;;;;;;;;;;21679:17;:36;;;;;21701:10;:14;21712:2;21701:14;;;;;;;;;;;;;;;;;;;;;;;;;21700:15;21679:36;21671:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;21604:175;20250:1544;20148:1657;21822:22;21847:21;21858:9;21847:6;:10;;:21;;;;:::i;:::-;21822:46;;21897:27;21917:6;21897:9;:15;21907:4;21897:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;21879:9;:15;21889:4;21879:15;;;;;;;;;;;;;;;:45;;;;21951:33;21969:14;21951:9;:13;21961:2;21951:13;;;;;;;;;;;;;;;;:17;;:33;;;;:::i;:::-;21935:9;:13;21945:2;21935:13;;;;;;;;;;;;;;;:49;;;;22022:39;22051:9;22022;:24;22040:4;22022:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;21995:9;:24;22013:4;21995:24;;;;;;;;;;;;;;;:66;;;;22092:2;22077:34;;22086:4;22077:34;;;22096:14;22077:34;;;;;;:::i;:::-;;;;;;;;19761:2358;;;19692:2427;;;:::o;1177:192::-;1263:7;1296:1;1291;:6;;1299:12;1283:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1323:9;1339:1;1335;:5;;;;:::i;:::-;1323:17;;1360:1;1353:8;;;1177:192;;;;;:::o;844:181::-;902:7;922:9;938:1;934;:5;;;;:::i;:::-;922:17;;963:1;958;:6;;950:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1016:1;1009:8;;;844:181;;;;:::o;17893:236::-;17980:9;17975:147;17999:9;;:16;;17995:1;:20;17975:147;;;18037:12;18052:9;;18062:1;18052:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18037:27;;18106:4;18079:18;:24;18098:4;18079:24;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;18022:100;18017:3;;;;;:::i;:::-;;;;17975:147;;;;17893:236;;;:::o;23422:729::-;23548:21;23586:1;23572:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23548:40;;23617:4;23599;23604:1;23599:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;23643:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23633:4;23638:1;23633:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;23676:62;23693:4;23708:15;;;;;;;;;;;23726:11;23676:8;:62::i;:::-;23749:15;;;;;;;;;;;:66;;;23830:11;23856:1;23872:4;23899;23919:15;23749:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23958:18;23979:21;23958:42;;24011:17;24031;24046:1;24031:10;:14;;:17;;;;:::i;:::-;24011:37;;24069:6;;;;;;;;;;;24061:24;;:35;24086:9;24061:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24115:6;;;;;;;;;;;24107:24;;:35;24132:9;24107:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23477:674;;;23422:729;:::o;16132:346::-;16227:9;16222:249;16246:9;:16;16242:1;:20;16222:249;;;16284:12;16299:9;16309:1;16299:12;;;;;;;;:::i;:::-;;;;;;;;16284:27;;16329:7;16326:134;;;16376:4;16357:10;:16;16368:4;16357:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;16326:134;;;16428:10;:16;16439:4;16428:16;;;;;;;;;;;;;;;;16421:23;;;;;;;;;;;16326:134;16269:202;16264:3;;;;;:::i;:::-;;;;16222:249;;;;16132:346;;:::o;22127:546::-;22174:22;;;;;;;;;;;22171:495;;;22217:9;22213:442;22235:13;;;;;;;;;;;:18;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22231:1;:24;22213:442;;;22281:14;22298:13;;;;;;;;;;;:27;;;22326:1;22298:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22281:47;;22347:14;22364:9;:17;22374:6;22364:17;;;;;;;;;;;;;;;;22347:34;;22412:1;22403:6;:10;22400:193;;;22458:29;22480:6;22458:9;:17;22468:6;22458:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;22438:9;:17;22448:6;22438:17;;;;;;;;;;;;;;;:49;;;;22537:36;22566:6;22537:9;:24;22555:4;22537:24;;;;;;;;;;;;;;;;:28;;:36;;;;:::i;:::-;22510:9;:24;22528:4;22510:24;;;;;;;;;;;;;;;:63;;;;22400:193;22611:13;;;;;;;;;;;:20;;;22632:6;22611:28;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22262:393;;22257:3;;;;;:::i;:::-;;;;22213:442;;;;22171:495;22127:546::o;1856:132::-;1914:7;1941:39;1945:1;1948;1941:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1934:46;;1856:132;;;;:::o;18137:294::-;18231:1;18212:21;;:7;:21;;;18204:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18292:18;18304:5;18292:7;;:11;;:18;;;;:::i;:::-;18282:7;:28;;;;18342:29;18365:5;18342:9;:18;18352:7;18342:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;18321:9;:18;18331:7;18321:18;;;;;;;;;;;;;;;:50;;;;18413:1;18387:36;;18396:7;18387:36;;;18417:5;18387:36;;;;;;:::i;:::-;;;;;;;;18137:294;;:::o;1377:471::-;1435:7;1685:1;1680;:6;1676:47;;1710:1;1703:8;;;;1676:47;1735:9;1751:1;1747;:5;;;;:::i;:::-;1735:17;;1780:1;1775;1771;:5;;;;:::i;:::-;:10;1763:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1839:1;1832:8;;;1377:471;;;;;:::o;1033:136::-;1091:7;1118:43;1122:1;1125;1118:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1111:50;;1033:136;;;;:::o;1996:278::-;2082:7;2114:1;2110;:5;2117:12;2102:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2141:9;2157:1;2153;:5;;;;:::i;:::-;2141:17;;2265:1;2258:8;;;1996:278;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:90::-;1383:7;1426:5;1419:13;1412:21;1401:32;;1349:90;;;:::o;1445:109::-;1526:21;1541:5;1526:21;:::i;:::-;1521:3;1514:34;1445:109;;:::o;1560:210::-;1647:4;1685:2;1674:9;1670:18;1662:26;;1698:65;1760:1;1749:9;1745:17;1736:6;1698:65;:::i;:::-;1560:210;;;;:::o;1776:75::-;1809:6;1842:2;1836:9;1826:19;;1776:75;:::o;1857:117::-;1966:1;1963;1956:12;1980:117;2089:1;2086;2079:12;2103:126;2140:7;2180:42;2173:5;2169:54;2158:65;;2103:126;;;:::o;2235:96::-;2272:7;2301:24;2319:5;2301:24;:::i;:::-;2290:35;;2235:96;;;:::o;2337:122::-;2410:24;2428:5;2410:24;:::i;:::-;2403:5;2400:35;2390:63;;2449:1;2446;2439:12;2390:63;2337:122;:::o;2465:139::-;2511:5;2549:6;2536:20;2527:29;;2565:33;2592:5;2565:33;:::i;:::-;2465:139;;;;:::o;2610:77::-;2647:7;2676:5;2665:16;;2610:77;;;:::o;2693:122::-;2766:24;2784:5;2766:24;:::i;:::-;2759:5;2756:35;2746:63;;2805:1;2802;2795:12;2746:63;2693:122;:::o;2821:139::-;2867:5;2905:6;2892:20;2883:29;;2921:33;2948:5;2921:33;:::i;:::-;2821:139;;;;:::o;2966:474::-;3034:6;3042;3091:2;3079:9;3070:7;3066:23;3062:32;3059:119;;;3097:79;;:::i;:::-;3059:119;3217:1;3242:53;3287:7;3278:6;3267:9;3263:22;3242:53;:::i;:::-;3232:63;;3188:117;3344:2;3370:53;3415:7;3406:6;3395:9;3391:22;3370:53;:::i;:::-;3360:63;;3315:118;2966:474;;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:152::-;4203:9;4236:37;4267:5;4236:37;:::i;:::-;4223:50;;4127:152;;;:::o;4285:183::-;4398:63;4455:5;4398:63;:::i;:::-;4393:3;4386:76;4285:183;;:::o;4474:274::-;4593:4;4631:2;4620:9;4616:18;4608:26;;4644:97;4738:1;4727:9;4723:17;4714:6;4644:97;:::i;:::-;4474:274;;;;:::o;4754:118::-;4841:24;4859:5;4841:24;:::i;:::-;4836:3;4829:37;4754:118;;:::o;4878:222::-;4971:4;5009:2;4998:9;4994:18;4986:26;;5022:71;5090:1;5079:9;5075:17;5066:6;5022:71;:::i;:::-;4878:222;;;;:::o;5106:619::-;5183:6;5191;5199;5248:2;5236:9;5227:7;5223:23;5219:32;5216:119;;;5254:79;;:::i;:::-;5216:119;5374:1;5399:53;5444:7;5435:6;5424:9;5420:22;5399:53;:::i;:::-;5389:63;;5345:117;5501:2;5527:53;5572:7;5563:6;5552:9;5548:22;5527:53;:::i;:::-;5517:63;;5472:118;5629:2;5655:53;5700:7;5691:6;5680:9;5676:22;5655:53;:::i;:::-;5645:63;;5600:118;5106:619;;;;;:::o;5731:86::-;5766:7;5806:4;5799:5;5795:16;5784:27;;5731:86;;;:::o;5823:112::-;5906:22;5922:5;5906:22;:::i;:::-;5901:3;5894:35;5823:112;;:::o;5941:214::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:67;6145:1;6134:9;6130:17;6121:6;6081:67;:::i;:::-;5941:214;;;;:::o;6161:117::-;6270:1;6267;6260:12;6284:117;6393:1;6390;6383:12;6407:117;6516:1;6513;6506:12;6547:568;6620:8;6630:6;6680:3;6673:4;6665:6;6661:17;6657:27;6647:122;;6688:79;;:::i;:::-;6647:122;6801:6;6788:20;6778:30;;6831:18;6823:6;6820:30;6817:117;;;6853:79;;:::i;:::-;6817:117;6967:4;6959:6;6955:17;6943:29;;7021:3;7013:4;7005:6;7001:17;6991:8;6987:32;6984:41;6981:128;;;7028:79;;:::i;:::-;6981:128;6547:568;;;;;:::o;7121:116::-;7191:21;7206:5;7191:21;:::i;:::-;7184:5;7181:32;7171:60;;7227:1;7224;7217:12;7171:60;7121:116;:::o;7243:133::-;7286:5;7324:6;7311:20;7302:29;;7340:30;7364:5;7340:30;:::i;:::-;7243:133;;;;:::o;7382:698::-;7474:6;7482;7490;7539:2;7527:9;7518:7;7514:23;7510:32;7507:119;;;7545:79;;:::i;:::-;7507:119;7693:1;7682:9;7678:17;7665:31;7723:18;7715:6;7712:30;7709:117;;;7745:79;;:::i;:::-;7709:117;7858:80;7930:7;7921:6;7910:9;7906:22;7858:80;:::i;:::-;7840:98;;;;7636:312;7987:2;8013:50;8055:7;8046:6;8035:9;8031:22;8013:50;:::i;:::-;8003:60;;7958:115;7382:698;;;;;:::o;8086:118::-;8173:24;8191:5;8173:24;:::i;:::-;8168:3;8161:37;8086:118;;:::o;8210:222::-;8303:4;8341:2;8330:9;8326:18;8318:26;;8354:71;8422:1;8411:9;8407:17;8398:6;8354:71;:::i;:::-;8210:222;;;;:::o;8438:323::-;8494:6;8543:2;8531:9;8522:7;8518:23;8514:32;8511:119;;;8549:79;;:::i;:::-;8511:119;8669:1;8694:50;8736:7;8727:6;8716:9;8712:22;8694:50;:::i;:::-;8684:60;;8640:114;8438:323;;;;:::o;8767:474::-;8835:6;8843;8892:2;8880:9;8871:7;8867:23;8863:32;8860:119;;;8898:79;;:::i;:::-;8860:119;9018:1;9043:53;9088:7;9079:6;9068:9;9064:22;9043:53;:::i;:::-;9033:63;;8989:117;9145:2;9171:53;9216:7;9207:6;9196:9;9192:22;9171:53;:::i;:::-;9161:63;;9116:118;8767:474;;;;;:::o;9247:180::-;9295:77;9292:1;9285:88;9392:4;9389:1;9382:15;9416:4;9413:1;9406:15;9433:281;9516:27;9538:4;9516:27;:::i;:::-;9508:6;9504:40;9646:6;9634:10;9631:22;9610:18;9598:10;9595:34;9592:62;9589:88;;;9657:18;;:::i;:::-;9589:88;9697:10;9693:2;9686:22;9476:238;9433:281;;:::o;9720:129::-;9754:6;9781:20;;:::i;:::-;9771:30;;9810:33;9838:4;9830:6;9810:33;:::i;:::-;9720:129;;;:::o;9855:311::-;9932:4;10022:18;10014:6;10011:30;10008:56;;;10044:18;;:::i;:::-;10008:56;10094:4;10086:6;10082:17;10074:25;;10154:4;10148;10144:15;10136:23;;9855:311;;;:::o;10189:710::-;10285:5;10310:81;10326:64;10383:6;10326:64;:::i;:::-;10310:81;:::i;:::-;10301:90;;10411:5;10440:6;10433:5;10426:21;10474:4;10467:5;10463:16;10456:23;;10527:4;10519:6;10515:17;10507:6;10503:30;10556:3;10548:6;10545:15;10542:122;;;10575:79;;:::i;:::-;10542:122;10690:6;10673:220;10707:6;10702:3;10699:15;10673:220;;;10782:3;10811:37;10844:3;10832:10;10811:37;:::i;:::-;10806:3;10799:50;10878:4;10873:3;10869:14;10862:21;;10749:144;10733:4;10728:3;10724:14;10717:21;;10673:220;;;10677:21;10291:608;;10189:710;;;;;:::o;10922:370::-;10993:5;11042:3;11035:4;11027:6;11023:17;11019:27;11009:122;;11050:79;;:::i;:::-;11009:122;11167:6;11154:20;11192:94;11282:3;11274:6;11267:4;11259:6;11255:17;11192:94;:::i;:::-;11183:103;;10999:293;10922:370;;;;:::o;11298:539::-;11382:6;11431:2;11419:9;11410:7;11406:23;11402:32;11399:119;;;11437:79;;:::i;:::-;11399:119;11585:1;11574:9;11570:17;11557:31;11615:18;11607:6;11604:30;11601:117;;;11637:79;;:::i;:::-;11601:117;11742:78;11812:7;11803:6;11792:9;11788:22;11742:78;:::i;:::-;11732:88;;11528:302;11298:539;;;;:::o;11843:329::-;11902:6;11951:2;11939:9;11930:7;11926:23;11922:32;11919:119;;;11957:79;;:::i;:::-;11919:119;12077:1;12102:53;12147:7;12138:6;12127:9;12123:22;12102:53;:::i;:::-;12092:63;;12048:117;11843:329;;;;:::o;12178:474::-;12246:6;12254;12303:2;12291:9;12282:7;12278:23;12274:32;12271:119;;;12309:79;;:::i;:::-;12271:119;12429:1;12454:53;12499:7;12490:6;12479:9;12475:22;12454:53;:::i;:::-;12444:63;;12400:117;12556:2;12582:53;12627:7;12618:6;12607:9;12603:22;12582:53;:::i;:::-;12572:63;;12527:118;12178:474;;;;;:::o;12658:173::-;12798:25;12794:1;12786:6;12782:14;12775:49;12658:173;:::o;12837:366::-;12979:3;13000:67;13064:2;13059:3;13000:67;:::i;:::-;12993:74;;13076:93;13165:3;13076:93;:::i;:::-;13194:2;13189:3;13185:12;13178:19;;12837:366;;;:::o;13209:419::-;13375:4;13413:2;13402:9;13398:18;13390:26;;13462:9;13456:4;13452:20;13448:1;13437:9;13433:17;13426:47;13490:131;13616:4;13490:131;:::i;:::-;13482:139;;13209:419;;;:::o;13634:180::-;13682:77;13679:1;13672:88;13779:4;13776:1;13769:15;13803:4;13800:1;13793:15;13820:320;13864:6;13901:1;13895:4;13891:12;13881:22;;13948:1;13942:4;13938:12;13969:18;13959:81;;14025:4;14017:6;14013:17;14003:27;;13959:81;14087:2;14079:6;14076:14;14056:18;14053:38;14050:84;;14106:18;;:::i;:::-;14050:84;13871:269;13820:320;;;:::o;14146:228::-;14286:34;14282:1;14274:6;14270:14;14263:58;14355:11;14350:2;14342:6;14338:15;14331:36;14146:228;:::o;14380:366::-;14522:3;14543:67;14607:2;14602:3;14543:67;:::i;:::-;14536:74;;14619:93;14708:3;14619:93;:::i;:::-;14737:2;14732:3;14728:12;14721:19;;14380:366;;;:::o;14752:419::-;14918:4;14956:2;14945:9;14941:18;14933:26;;15005:9;14999:4;14995:20;14991:1;14980:9;14976:17;14969:47;15033:131;15159:4;15033:131;:::i;:::-;15025:139;;14752:419;;;:::o;15177:223::-;15317:34;15313:1;15305:6;15301:14;15294:58;15386:6;15381:2;15373:6;15369:15;15362:31;15177:223;:::o;15406:366::-;15548:3;15569:67;15633:2;15628:3;15569:67;:::i;:::-;15562:74;;15645:93;15734:3;15645:93;:::i;:::-;15763:2;15758:3;15754:12;15747:19;;15406:366;;;:::o;15778:419::-;15944:4;15982:2;15971:9;15967:18;15959:26;;16031:9;16025:4;16021:20;16017:1;16006:9;16002:17;15995:47;16059:131;16185:4;16059:131;:::i;:::-;16051:139;;15778:419;;;:::o;16203:143::-;16260:5;16291:6;16285:13;16276:22;;16307:33;16334:5;16307:33;:::i;:::-;16203:143;;;;:::o;16352:351::-;16422:6;16471:2;16459:9;16450:7;16446:23;16442:32;16439:119;;;16477:79;;:::i;:::-;16439:119;16597:1;16622:64;16678:7;16669:6;16658:9;16654:22;16622:64;:::i;:::-;16612:74;;16568:128;16352:351;;;;:::o;16709:332::-;16830:4;16868:2;16857:9;16853:18;16845:26;;16881:71;16949:1;16938:9;16934:17;16925:6;16881:71;:::i;:::-;16962:72;17030:2;17019:9;17015:18;17006:6;16962:72;:::i;:::-;16709:332;;;;;:::o;17047:137::-;17101:5;17132:6;17126:13;17117:22;;17148:30;17172:5;17148:30;:::i;:::-;17047:137;;;;:::o;17190:345::-;17257:6;17306:2;17294:9;17285:7;17281:23;17277:32;17274:119;;;17312:79;;:::i;:::-;17274:119;17432:1;17457:61;17510:7;17501:6;17490:9;17486:22;17457:61;:::i;:::-;17447:71;;17403:125;17190:345;;;;:::o;17541:182::-;17681:34;17677:1;17669:6;17665:14;17658:58;17541:182;:::o;17729:366::-;17871:3;17892:67;17956:2;17951:3;17892:67;:::i;:::-;17885:74;;17968:93;18057:3;17968:93;:::i;:::-;18086:2;18081:3;18077:12;18070:19;;17729:366;;;:::o;18101:419::-;18267:4;18305:2;18294:9;18290:18;18282:26;;18354:9;18348:4;18344:20;18340:1;18329:9;18325:17;18318:47;18382:131;18508:4;18382:131;:::i;:::-;18374:139;;18101:419;;;:::o;18526:143::-;18583:5;18614:6;18608:13;18599:22;;18630:33;18657:5;18630:33;:::i;:::-;18526:143;;;;:::o;18675:351::-;18745:6;18794:2;18782:9;18773:7;18769:23;18765:32;18762:119;;;18800:79;;:::i;:::-;18762:119;18920:1;18945:64;19001:7;18992:6;18981:9;18977:22;18945:64;:::i;:::-;18935:74;;18891:128;18675:351;;;;:::o;19032:180::-;19080:77;19077:1;19070:88;19177:4;19174:1;19167:15;19201:4;19198:1;19191:15;19218:114;19285:6;19319:5;19313:12;19303:22;;19218:114;;;:::o;19338:184::-;19437:11;19471:6;19466:3;19459:19;19511:4;19506:3;19502:14;19487:29;;19338:184;;;;:::o;19528:132::-;19595:4;19618:3;19610:11;;19648:4;19643:3;19639:14;19631:22;;19528:132;;;:::o;19666:108::-;19743:24;19761:5;19743:24;:::i;:::-;19738:3;19731:37;19666:108;;:::o;19780:179::-;19849:10;19870:46;19912:3;19904:6;19870:46;:::i;:::-;19948:4;19943:3;19939:14;19925:28;;19780:179;;;;:::o;19965:113::-;20035:4;20067;20062:3;20058:14;20050:22;;19965:113;;;:::o;20114:732::-;20233:3;20262:54;20310:5;20262:54;:::i;:::-;20332:86;20411:6;20406:3;20332:86;:::i;:::-;20325:93;;20442:56;20492:5;20442:56;:::i;:::-;20521:7;20552:1;20537:284;20562:6;20559:1;20556:13;20537:284;;;20638:6;20632:13;20665:63;20724:3;20709:13;20665:63;:::i;:::-;20658:70;;20751:60;20804:6;20751:60;:::i;:::-;20741:70;;20597:224;20584:1;20581;20577:9;20572:14;;20537:284;;;20541:14;20837:3;20830:10;;20238:608;;;20114:732;;;;:::o;20852:483::-;21023:4;21061:2;21050:9;21046:18;21038:26;;21074:71;21142:1;21131:9;21127:17;21118:6;21074:71;:::i;:::-;21192:9;21186:4;21182:20;21177:2;21166:9;21162:18;21155:48;21220:108;21323:4;21314:6;21220:108;:::i;:::-;21212:116;;20852:483;;;;;:::o;21341:311::-;21418:4;21508:18;21500:6;21497:30;21494:56;;;21530:18;;:::i;:::-;21494:56;21580:4;21572:6;21568:17;21560:25;;21640:4;21634;21630:15;21622:23;;21341:311;;;:::o;21675:732::-;21782:5;21807:81;21823:64;21880:6;21823:64;:::i;:::-;21807:81;:::i;:::-;21798:90;;21908:5;21937:6;21930:5;21923:21;21971:4;21964:5;21960:16;21953:23;;22024:4;22016:6;22012:17;22004:6;22000:30;22053:3;22045:6;22042:15;22039:122;;;22072:79;;:::i;:::-;22039:122;22187:6;22170:231;22204:6;22199:3;22196:15;22170:231;;;22279:3;22308:48;22352:3;22340:10;22308:48;:::i;:::-;22303:3;22296:61;22386:4;22381:3;22377:14;22370:21;;22246:155;22230:4;22225:3;22221:14;22214:21;;22170:231;;;22174:21;21788:619;;21675:732;;;;;:::o;22430:385::-;22512:5;22561:3;22554:4;22546:6;22542:17;22538:27;22528:122;;22569:79;;:::i;:::-;22528:122;22679:6;22673:13;22704:105;22805:3;22797:6;22790:4;22782:6;22778:17;22704:105;:::i;:::-;22695:114;;22518:297;22430:385;;;;:::o;22821:554::-;22916:6;22965:2;22953:9;22944:7;22940:23;22936:32;22933:119;;;22971:79;;:::i;:::-;22933:119;23112:1;23101:9;23097:17;23091:24;23142:18;23134:6;23131:30;23128:117;;;23164:79;;:::i;:::-;23128:117;23269:89;23350:7;23341:6;23330:9;23326:22;23269:89;:::i;:::-;23259:99;;23062:306;22821:554;;;;:::o;23381:221::-;23521:34;23517:1;23509:6;23505:14;23498:58;23590:4;23585:2;23577:6;23573:15;23566:29;23381:221;:::o;23608:366::-;23750:3;23771:67;23835:2;23830:3;23771:67;:::i;:::-;23764:74;;23847:93;23936:3;23847:93;:::i;:::-;23965:2;23960:3;23956:12;23949:19;;23608:366;;;:::o;23980:419::-;24146:4;24184:2;24173:9;24169:18;24161:26;;24233:9;24227:4;24223:20;24219:1;24208:9;24204:17;24197:47;24261:131;24387:4;24261:131;:::i;:::-;24253:139;;23980:419;;;:::o;24405:332::-;24526:4;24564:2;24553:9;24549:18;24541:26;;24577:71;24645:1;24634:9;24630:17;24621:6;24577:71;:::i;:::-;24658:72;24726:2;24715:9;24711:18;24702:6;24658:72;:::i;:::-;24405:332;;;;;:::o;24743:85::-;24788:7;24817:5;24806:16;;24743:85;;;:::o;24834:158::-;24892:9;24925:61;24943:42;24952:32;24978:5;24952:32;:::i;:::-;24943:42;:::i;:::-;24925:61;:::i;:::-;24912:74;;24834:158;;;:::o;24998:147::-;25093:45;25132:5;25093:45;:::i;:::-;25088:3;25081:58;24998:147;;:::o;25151:807::-;25400:4;25438:3;25427:9;25423:19;25415:27;;25452:71;25520:1;25509:9;25505:17;25496:6;25452:71;:::i;:::-;25533:72;25601:2;25590:9;25586:18;25577:6;25533:72;:::i;:::-;25615:80;25691:2;25680:9;25676:18;25667:6;25615:80;:::i;:::-;25705;25781:2;25770:9;25766:18;25757:6;25705:80;:::i;:::-;25795:73;25863:3;25852:9;25848:19;25839:6;25795:73;:::i;:::-;25878;25946:3;25935:9;25931:19;25922:6;25878:73;:::i;:::-;25151:807;;;;;;;;;:::o;25964:663::-;26052:6;26060;26068;26117:2;26105:9;26096:7;26092:23;26088:32;26085:119;;;26123:79;;:::i;:::-;26085:119;26243:1;26268:64;26324:7;26315:6;26304:9;26300:22;26268:64;:::i;:::-;26258:74;;26214:128;26381:2;26407:64;26463:7;26454:6;26443:9;26439:22;26407:64;:::i;:::-;26397:74;;26352:129;26520:2;26546:64;26602:7;26593:6;26582:9;26578:22;26546:64;:::i;:::-;26536:74;;26491:129;25964:663;;;;;:::o;26633:180::-;26681:77;26678:1;26671:88;26778:4;26775:1;26768:15;26802:4;26799:1;26792:15;26819:233;26858:3;26881:24;26899:5;26881:24;:::i;:::-;26872:33;;26927:66;26920:5;26917:77;26914:103;;26997:18;;:::i;:::-;26914:103;27044:1;27037:5;27033:13;27026:20;;26819:233;;;:::o;27058:224::-;27198:34;27194:1;27186:6;27182:14;27175:58;27267:7;27262:2;27254:6;27250:15;27243:32;27058:224;:::o;27288:366::-;27430:3;27451:67;27515:2;27510:3;27451:67;:::i;:::-;27444:74;;27527:93;27616:3;27527:93;:::i;:::-;27645:2;27640:3;27636:12;27629:19;;27288:366;;;:::o;27660:419::-;27826:4;27864:2;27853:9;27849:18;27841:26;;27913:9;27907:4;27903:20;27899:1;27888:9;27884:17;27877:47;27941:131;28067:4;27941:131;:::i;:::-;27933:139;;27660:419;;;:::o;28085:225::-;28225:34;28221:1;28213:6;28209:14;28202:58;28294:8;28289:2;28281:6;28277:15;28270:33;28085:225;:::o;28316:366::-;28458:3;28479:67;28543:2;28538:3;28479:67;:::i;:::-;28472:74;;28555:93;28644:3;28555:93;:::i;:::-;28673:2;28668:3;28664:12;28657:19;;28316:366;;;:::o;28688:419::-;28854:4;28892:2;28881:9;28877:18;28869:26;;28941:9;28935:4;28931:20;28927:1;28916:9;28912:17;28905:47;28969:131;29095:4;28969:131;:::i;:::-;28961:139;;28688:419;;;:::o;29113:332::-;29234:4;29272:2;29261:9;29257:18;29249:26;;29285:71;29353:1;29342:9;29338:17;29329:6;29285:71;:::i;:::-;29366:72;29434:2;29423:9;29419:18;29410:6;29366:72;:::i;:::-;29113:332;;;;;:::o;29451:223::-;29591:34;29587:1;29579:6;29575:14;29568:58;29660:6;29655:2;29647:6;29643:15;29636:31;29451:223;:::o;29680:366::-;29822:3;29843:67;29907:2;29902:3;29843:67;:::i;:::-;29836:74;;29919:93;30008:3;29919:93;:::i;:::-;30037:2;30032:3;30028:12;30021:19;;29680:366;;;:::o;30052:419::-;30218:4;30256:2;30245:9;30241:18;30233:26;;30305:9;30299:4;30295:20;30291:1;30280:9;30276:17;30269:47;30333:131;30459:4;30333:131;:::i;:::-;30325:139;;30052:419;;;:::o;30477:221::-;30617:34;30613:1;30605:6;30601:14;30594:58;30686:4;30681:2;30673:6;30669:15;30662:29;30477:221;:::o;30704:366::-;30846:3;30867:67;30931:2;30926:3;30867:67;:::i;:::-;30860:74;;30943:93;31032:3;30943:93;:::i;:::-;31061:2;31056:3;31052:12;31045:19;;30704:366;;;:::o;31076:419::-;31242:4;31280:2;31269:9;31265:18;31257:26;;31329:9;31323:4;31319:20;31315:1;31304:9;31300:17;31293:47;31357:131;31483:4;31357:131;:::i;:::-;31349:139;;31076:419;;;:::o;31501:224::-;31641:34;31637:1;31629:6;31625:14;31618:58;31710:7;31705:2;31697:6;31693:15;31686:32;31501:224;:::o;31731:366::-;31873:3;31894:67;31958:2;31953:3;31894:67;:::i;:::-;31887:74;;31970:93;32059:3;31970:93;:::i;:::-;32088:2;32083:3;32079:12;32072:19;;31731:366;;;:::o;32103:419::-;32269:4;32307:2;32296:9;32292:18;32284:26;;32356:9;32350:4;32346:20;32342:1;32331:9;32327:17;32320:47;32384:131;32510:4;32384:131;:::i;:::-;32376:139;;32103:419;;;:::o;32528:222::-;32668:34;32664:1;32656:6;32652:14;32645:58;32737:5;32732:2;32724:6;32720:15;32713:30;32528:222;:::o;32756:366::-;32898:3;32919:67;32983:2;32978:3;32919:67;:::i;:::-;32912:74;;32995:93;33084:3;32995:93;:::i;:::-;33113:2;33108:3;33104:12;33097:19;;32756:366;;;:::o;33128:419::-;33294:4;33332:2;33321:9;33317:18;33309:26;;33381:9;33375:4;33371:20;33367:1;33356:9;33352:17;33345:47;33409:131;33535:4;33409:131;:::i;:::-;33401:139;;33128:419;;;:::o;33553:228::-;33693:34;33689:1;33681:6;33677:14;33670:58;33762:11;33757:2;33749:6;33745:15;33738:36;33553:228;:::o;33787:366::-;33929:3;33950:67;34014:2;34009:3;33950:67;:::i;:::-;33943:74;;34026:93;34115:3;34026:93;:::i;:::-;34144:2;34139:3;34135:12;34128:19;;33787:366;;;:::o;34159:419::-;34325:4;34363:2;34352:9;34348:18;34340:26;;34412:9;34406:4;34402:20;34398:1;34387:9;34383:17;34376:47;34440:131;34566:4;34440:131;:::i;:::-;34432:139;;34159:419;;;:::o;34584:222::-;34724:34;34720:1;34712:6;34708:14;34701:58;34793:5;34788:2;34780:6;34776:15;34769:30;34584:222;:::o;34812:366::-;34954:3;34975:67;35039:2;35034:3;34975:67;:::i;:::-;34968:74;;35051:93;35140:3;35051:93;:::i;:::-;35169:2;35164:3;35160:12;35153:19;;34812:366;;;:::o;35184:419::-;35350:4;35388:2;35377:9;35373:18;35365:26;;35437:9;35431:4;35427:20;35423:1;35412:9;35408:17;35401:47;35465:131;35591:4;35465:131;:::i;:::-;35457:139;;35184:419;;;:::o;35609:226::-;35749:34;35745:1;35737:6;35733:14;35726:58;35818:9;35813:2;35805:6;35801:15;35794:34;35609:226;:::o;35841:366::-;35983:3;36004:67;36068:2;36063:3;36004:67;:::i;:::-;35997:74;;36080:93;36169:3;36080:93;:::i;:::-;36198:2;36193:3;36189:12;36182:19;;35841:366;;;:::o;36213:419::-;36379:4;36417:2;36406:9;36402:18;36394:26;;36466:9;36460:4;36456:20;36452:1;36441:9;36437:17;36430:47;36494:131;36620:4;36494:131;:::i;:::-;36486:139;;36213:419;;;:::o;36638:194::-;36678:4;36698:20;36716:1;36698:20;:::i;:::-;36693:25;;36732:20;36750:1;36732:20;:::i;:::-;36727:25;;36776:1;36773;36769:9;36761:17;;36800:1;36794:4;36791:11;36788:37;;;36805:18;;:::i;:::-;36788:37;36638:194;;;;:::o;36838:191::-;36878:3;36897:20;36915:1;36897:20;:::i;:::-;36892:25;;36931:20;36949:1;36931:20;:::i;:::-;36926:25;;36974:1;36971;36967:9;36960:16;;36995:3;36992:1;36989:10;36986:36;;;37002:18;;:::i;:::-;36986:36;36838:191;;;;:::o;37035:177::-;37175:29;37171:1;37163:6;37159:14;37152:53;37035:177;:::o;37218:366::-;37360:3;37381:67;37445:2;37440:3;37381:67;:::i;:::-;37374:74;;37457:93;37546:3;37457:93;:::i;:::-;37575:2;37570:3;37566:12;37559:19;;37218:366;;;:::o;37590:419::-;37756:4;37794:2;37783:9;37779:18;37771:26;;37843:9;37837:4;37833:20;37829:1;37818:9;37814:17;37807:47;37871:131;37997:4;37871:131;:::i;:::-;37863:139;;37590:419;;;:::o;38015:831::-;38278:4;38316:3;38305:9;38301:19;38293:27;;38330:71;38398:1;38387:9;38383:17;38374:6;38330:71;:::i;:::-;38411:80;38487:2;38476:9;38472:18;38463:6;38411:80;:::i;:::-;38538:9;38532:4;38528:20;38523:2;38512:9;38508:18;38501:48;38566:108;38669:4;38660:6;38566:108;:::i;:::-;38558:116;;38684:72;38752:2;38741:9;38737:18;38728:6;38684:72;:::i;:::-;38766:73;38834:3;38823:9;38819:19;38810:6;38766:73;:::i;:::-;38015:831;;;;;;;;:::o;38852:220::-;38992:34;38988:1;38980:6;38976:14;38969:58;39061:3;39056:2;39048:6;39044:15;39037:28;38852:220;:::o;39078:366::-;39220:3;39241:67;39305:2;39300:3;39241:67;:::i;:::-;39234:74;;39317:93;39406:3;39317:93;:::i;:::-;39435:2;39430:3;39426:12;39419:19;;39078:366;;;:::o;39450:419::-;39616:4;39654:2;39643:9;39639:18;39631:26;;39703:9;39697:4;39693:20;39689:1;39678:9;39674:17;39667:47;39731:131;39857:4;39731:131;:::i;:::-;39723:139;;39450:419;;;:::o;39875:410::-;39915:7;39938:20;39956:1;39938:20;:::i;:::-;39933:25;;39972:20;39990:1;39972:20;:::i;:::-;39967:25;;40027:1;40024;40020:9;40049:30;40067:11;40049:30;:::i;:::-;40038:41;;40228:1;40219:7;40215:15;40212:1;40209:22;40189:1;40182:9;40162:83;40139:139;;40258:18;;:::i;:::-;40139:139;39923:362;39875:410;;;;:::o;40291:180::-;40339:77;40336:1;40329:88;40436:4;40433:1;40426:15;40460:4;40457:1;40450:15;40477:185;40517:1;40534:20;40552:1;40534:20;:::i;:::-;40529:25;;40568:20;40586:1;40568:20;:::i;:::-;40563:25;;40607:1;40597:35;;40612:18;;:::i;:::-;40597:35;40654:1;40651;40647:9;40642:14;;40477:185;;;;:::o;40668:220::-;40808:34;40804:1;40796:6;40792:14;40785:58;40877:3;40872:2;40864:6;40860:15;40853:28;40668:220;:::o;40894:366::-;41036:3;41057:67;41121:2;41116:3;41057:67;:::i;:::-;41050:74;;41133:93;41222:3;41133:93;:::i;:::-;41251:2;41246:3;41242:12;41235:19;;40894:366;;;:::o;41266:419::-;41432:4;41470:2;41459:9;41455:18;41447:26;;41519:9;41513:4;41509:20;41505:1;41494:9;41490:17;41483:47;41547:131;41673:4;41547:131;:::i;:::-;41539:139;;41266:419;;;:::o

Swarm Source

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