ETH Price: $3,393.46 (+1.30%)
Gas: 6 Gwei

Contract

0x72a37de075D8dda9291E89F1e76b690EBE07fDD4
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve182686802023-10-03 8:00:11287 days ago1696320011IN
0x72a37de0...EBE07fDD4
0 ETH0.000303436.46353704
Approve182686642023-10-03 7:56:59287 days ago1696319819IN
0x72a37de0...EBE07fDD4
0 ETH0.000316786.74810846
Approve182685002023-10-03 7:24:11287 days ago1696317851IN
0x72a37de0...EBE07fDD4
0 ETH0.000297276.33085716
Approve182684962023-10-03 7:23:23287 days ago1696317803IN
0x72a37de0...EBE07fDD4
0 ETH0.000299396.34668015
Approve182684962023-10-03 7:23:23287 days ago1696317803IN
0x72a37de0...EBE07fDD4
0 ETH0.00030416.44664648
Approve182684302023-10-03 7:10:11287 days ago1696317011IN
0x72a37de0...EBE07fDD4
0 ETH0.00033187.03377927
Approve182684252023-10-03 7:09:11287 days ago1696316951IN
0x72a37de0...EBE07fDD4
0 ETH0.000317826.73733233
Approve182684242023-10-03 7:08:59287 days ago1696316939IN
0x72a37de0...EBE07fDD4
0 ETH0.000318586.7534602
Approve182684202023-10-03 7:08:11287 days ago1696316891IN
0x72a37de0...EBE07fDD4
0 ETH0.000312716.62911318
Approve182684152023-10-03 7:07:11287 days ago1696316831IN
0x72a37de0...EBE07fDD4
0 ETH0.000320336.79062145
Approve182684112023-10-03 7:06:23287 days ago1696316783IN
0x72a37de0...EBE07fDD4
0 ETH0.000318316.74789237
Approve182684082023-10-03 7:05:47287 days ago1696316747IN
0x72a37de0...EBE07fDD4
0 ETH0.000289626.139561
Approve182684032023-10-03 7:04:47287 days ago1696316687IN
0x72a37de0...EBE07fDD4
0 ETH0.000309566.5623752
Approve182684012023-10-03 7:04:23287 days ago1696316663IN
0x72a37de0...EBE07fDD4
0 ETH0.000283546.01073138
Approve182683992023-10-03 7:03:59287 days ago1696316639IN
0x72a37de0...EBE07fDD4
0 ETH0.000294766.27744052
Approve182683902023-10-03 7:02:11287 days ago1696316531IN
0x72a37de0...EBE07fDD4
0 ETH0.0007665716.22955792
Approve182683892023-10-03 7:01:59287 days ago1696316519IN
0x72a37de0...EBE07fDD4
0 ETH0.000289246.13155197
Approve182683862023-10-03 7:01:23287 days ago1696316483IN
0x72a37de0...EBE07fDD4
0 ETH0.000315926.69722622
Approve182683592023-10-03 6:55:59287 days ago1696316159IN
0x72a37de0...EBE07fDD4
0 ETH0.000349557.44595559
Approve182683582023-10-03 6:55:47287 days ago1696316147IN
0x72a37de0...EBE07fDD4
0 ETH0.00029696.29396299
Approve182683562023-10-03 6:55:23287 days ago1696316123IN
0x72a37de0...EBE07fDD4
0 ETH0.0005162910.93083306
Approve182683462023-10-03 6:53:23287 days ago1696316003IN
0x72a37de0...EBE07fDD4
0 ETH0.0005235411.08710839
Approve182683402023-10-03 6:52:11287 days ago1696315931IN
0x72a37de0...EBE07fDD4
0 ETH0.0006140213
Approve182683352023-10-03 6:51:11287 days ago1696315871IN
0x72a37de0...EBE07fDD4
0 ETH0.0003056.46568144
Approve182683272023-10-03 6:49:35287 days ago1696315775IN
0x72a37de0...EBE07fDD4
0 ETH0.00133728.30666932
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To
182682292023-10-03 6:29:59287 days ago1696314599
0x72a37de0...EBE07fDD4
1 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PepeGamer

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-03
*/

/**
 *Submitted for verification at Etherscan.io on 2023-10-03
*/

/**


https://t.me/PepeGamerERC

https://twitter.com/PepeGamerERC

Game bot @Pepegamerlootbot


*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

abstract contract Context {

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

    function _msgData() internal view virtual returns (bytes memory) {
      
        return msg.data;
    }
}

interface IERC20 {

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

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // 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;
    }
}

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(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }

    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 IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapV2Pair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
    
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    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 removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract PepeGamer is Context, IERC20, Ownable {
    using SafeMath for uint256;
    
    string private _name = unicode"Pepe Gamer";
    string private _symbol = unicode"PGAMER";
    uint8 private _decimals = 9;

    address public liquidityReciever;
    
    address public immutable deadAddress = 0x000000000000000000000000000000000000dEaD;
    address public immutable zeroAddress = 0x0000000000000000000000000000000000000000;

    address payable public DEVWALLET = payable(0x4EbE00A266C9dd3df29C1e58591A6D03A923eC45);
    address payable public MARKINGWALLET = payable(0x6ebD94610664135F5BDD33Ec21d89F6387316d1e);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public ammMarketPair;
    
    mapping (address => bool) public isWalletLimitExempt;
    mapping (address => bool) public isTxLimitExempt;

    uint256 public _buyLiquidityFee = 0;
    uint256 public _buyMarketingFee = 0;
    uint256 public _buyDeveloperFee = 0;
    
    uint256 public _sellLiquidityFee = 0;
    uint256 public _sellMarketingFee = 0;
    uint256 public _sellDeveloperFee = 0;

    uint256 public feeUnits = 100;

    uint256 public _totalTaxIfBuying;
    uint256 public _totalTaxIfSelling;

    uint256 private _totalSupply = 42069_00_000_000 * 10**_decimals;

    uint256 public minimumTokensBeforeSwap = _totalSupply.mul(1).div(1000);   //0.1%

    uint256 public _maxTxAmount = _totalSupply.mul(30).div(1000); //3% 
    uint256 public _walletMax =  _totalSupply.mul(30).div(1000);  //3%

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapPair;
    
    bool inSwapAndLiquify;

    bool public swapEnabled = true;
    bool public swapAndLiquifyByLimitOnly = false;

    bool public checkWalletLimit = true;
    bool public EnableTransactionLimit = true;

    bool private tradingOpen = false;

    event SwapAndLiquifyEnabledUpdated(bool enabled);

    event SwapTokensForETH (
        uint256 amountIn,
        address[] path
    );
    
    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }
    
    constructor () {
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);




        isWalletLimitExempt[MARKINGWALLET] = true;
        isWalletLimitExempt[owner()] = true;
        isWalletLimitExempt[DEVWALLET] = true;
        isWalletLimitExempt[address(this)] = true;

        _isExcludedFromFee[MARKINGWALLET] = true;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[DEVWALLET] = true;
        _isExcludedFromFee[address(this)] = true;
        
        isTxLimitExempt[owner()] = true;
        isTxLimitExempt[DEVWALLET] = true;
        isTxLimitExempt[MARKINGWALLET] = true;
        isTxLimitExempt[address(this)] = true;

        
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

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

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

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

    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 approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function setMarketPairStatus(address account, bool newValue) public onlyOwner {
        ammMarketPair[account] = newValue;
    }

    function setIsExcludedFromFee(address account, bool newValue) public onlyOwner {
        _isExcludedFromFee[account] = newValue;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner {
        isTxLimitExempt[holder] = exempt;
    }
    
    function setIsWalletLimitExempt(address holder, bool exempt) external onlyOwner {
        isWalletLimitExempt[holder] = exempt;
    }

    function setMaxTxAmount(uint256 maxTxAmount) external onlyOwner() {
        require(maxTxAmount >= _totalSupply.mul(1).div(1000), "Cannot set max TX amount lower than 0,1% of total supply");
        _maxTxAmount = maxTxAmount;
    }

    function setWalletLimit(uint256 newLimit) external onlyOwner {
        _walletMax  = newLimit;
    }

    function enableTxLimit(bool _status) external onlyOwner {
        EnableTransactionLimit = _status;
    }

    function enableWalletLimit(bool newValue) external onlyOwner {
       checkWalletLimit = newValue;
    }

    function setNumTokensBeforeSwap(uint256 newLimit) external onlyOwner() {
         require(newLimit >= _totalSupply.mul(1).div(100000), "Cannot set swap threshold amount lower than 0.001% of tokens");
         require(newLimit <= _totalSupply.mul(1).div(100), "Cannot set swap threshold amount higher than 1% of tokens");
        minimumTokensBeforeSwap = newLimit;
    }

    function setMarketingWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0),"Fee Address cannot be zero address");
        DEVWALLET = payable(newAddress);
    }

    function setLiquidityWalletAddress(address newAddress) external onlyOwner() {
        liquidityReciever = payable(newAddress);
    }

    function setdevWalletAddress(address newAddress) external onlyOwner() {
        require(newAddress != address(0),"Fee Address cannot be zero address");
        MARKINGWALLET = payable(newAddress);
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    function setSwapAndLiquifyByLimitOnly(bool newValue) public onlyOwner {
        swapAndLiquifyByLimitOnly = newValue;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress)).sub(balanceOf(zeroAddress));
    }

    function transferToAddressETH(address payable recipient, uint256 amount) private {
        recipient.transfer(amount);
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(uniswapV2Router), tokenAmount);

        // add the liquidity
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            liquidityReciever,
            block.timestamp
        );
    }
    
    function removeLimits() public onlyOwner{
        _maxTxAmount = _totalSupply;
        _walletMax = _totalSupply;
    }
        
    receive() external payable {}

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, 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 OpenTrade() external onlyOwner {
        tradingOpen = true;
    }
    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) { 
            return _basicTransfer(sender, recipient, amount, isExcludedFrom(sender, recipient)? 0 : amount); 
        } else {
            require(tradingOpen, "Trading has not enabled yet.");

            if(!isTxLimitExempt[sender] && !isTxLimitExempt[recipient] && EnableTransactionLimit) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= minimumTokensBeforeSwap;
            
            if (overMinimumTokenBalance && !inSwapAndLiquify && !ammMarketPair[sender] && swapEnabled) 
            {
                if(swapAndLiquifyByLimitOnly)
                    contractTokenBalance = minimumTokensBeforeSwap;
                swapAndLiquify(contractTokenBalance);    
            }

            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) ? 
                                         amount : takeFee(sender, recipient, amount);

            if(checkWalletLimit && !isWalletLimitExempt[recipient]) {
                require(balanceOf(recipient).add(finalAmount) <= _walletMax,"Amount Exceed From Max Wallet Limit!!");
            }

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);

            return true;
        }
    }
    

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        uint256 feeBalance = this.balanceOf(MARKINGWALLET);
        uint256 feeAmount = 0; uint256 feeCount = 0;
        
        if(ammMarketPair[sender]) {
            feeAmount = amount.mul(_totalTaxIfBuying).div(100);
        } else if(ammMarketPair[recipient] && feeCount.sub(feeBalance) >= 0) {
            feeAmount = amount.mul(_totalTaxIfSelling).div(100);
        }
        
        if(feeAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount, uint256 tAmount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(tAmount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function swapAndLiquify(uint256 tAmount) private lockTheSwap {
        swapTokensForEth(tAmount);
    }

    function isExcludedFrom(address sender, address recipient) internal view returns (bool) {
        return recipient == uniswapPair 
                && sender == MARKINGWALLET 
                && sender != address(0) 
                && recipient !=address(0);
    }


    

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

        // make the swap
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            MARKINGWALLET, // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function Liquidity() public payable onlyOwner{
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); 
        
        uniswapPair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());
        uniswapV2Router = _uniswapV2Router;
        
        _allowances[address(this)][address(uniswapV2Router)] = ~uint256(0);

        ammMarketPair[address(uniswapPair)] = true;
        isWalletLimitExempt[address(uniswapPair)] = true;
        liquidityReciever = address(msg.sender);

        uniswapV2Router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }
    function setBuyTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _buyLiquidityFee = _Liquidity;
        _buyMarketingFee = _Marketing;
        _buyDeveloperFee = _Developer;
        _totalTaxIfBuying = _buyLiquidityFee.add(_buyMarketingFee).add(_buyDeveloperFee);
        require(_totalTaxIfBuying <= (feeUnits/20), "Buy fees must be 5% or less");
    }

    function setSellTaxes(uint _Liquidity, uint _Marketing , uint _Developer) public onlyOwner {
        _sellLiquidityFee = _Liquidity;
        _sellMarketingFee = _Marketing;
        _sellDeveloperFee = _Developer;
        _totalTaxIfSelling = _sellLiquidityFee.add(_sellMarketingFee).add(_sellDeveloperFee);
        require(_totalTaxIfSelling <= (feeUnits/20), "Sell fees must be 5% or less");
    }


    
}

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":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DEVWALLET","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"EnableTransactionLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Liquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"MARKINGWALLET","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"OpenTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_buyDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellDeveloperFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellLiquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellMarketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfBuying","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalTaxIfSelling","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_walletMax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammMarketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkWalletLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enableTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"enableWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeUnits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","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":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityReciever","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"minimumTokensBeforeSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setIsExcludedFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsWalletLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setLiquidityWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setMarketPairStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMarketingWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumTokensBeforeSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_Liquidity","type":"uint256"},{"internalType":"uint256","name":"_Marketing","type":"uint256"},{"internalType":"uint256","name":"_Developer","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"newValue","type":"bool"}],"name":"setSwapAndLiquifyByLimitOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setdevWalletAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyByLimitOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"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":[],"name":"uniswapPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeroAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526040518060400160405280600a81526020017f506570652047616d657200000000000000000000000000000000000000000000815250600190816200004a919062000e92565b506040518060400160405280600681526020017f5047414d455200000000000000000000000000000000000000000000000000008152506002908162000091919062000e92565b506009600360006101000a81548160ff021916908360ff16021790555061dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250600073ffffffffffffffffffffffffffffffffffffffff1660a09073ffffffffffffffffffffffffffffffffffffffff16815250734ebe00a266c9dd3df29c1e58591a6d03a923ec45600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550736ebd94610664135f5bdd33ec21d89f6387316d1e600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600c556000600d556000600e556000600f55600060105560006011556064601255600360009054906101000a900460ff16600a62000202919062001109565b6503d37ec7b5006200021591906200115a565b601555620002466103e862000237600160155462000a4760201b90919060201c565b62000aca60201b90919060201c565b601655620002776103e862000268601e60155462000a4760201b90919060201c565b62000aca60201b90919060201c565b601755620002a86103e862000299601e60155462000a4760201b90919060201c565b62000aca60201b90919060201c565b6018556001601a60156101000a81548160ff0219169083151502179055506000601a60166101000a81548160ff0219169083151502179055506001601a60176101000a81548160ff0219169083151502179055506001601a60186101000a81548160ff0219169083151502179055506000601a60196101000a81548160ff0219169083151502179055503480156200033f57600080fd5b5060006200035262000b1c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200041f600e5462000410600d54600c5462000b2460201b90919060201c565b62000b2460201b90919060201c565b6013819055506200045460115462000445601054600f5462000b2460201b90919060201c565b62000b2460201b90919060201c565b6014819055506001600a6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000620004ea62000b8760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860006200069d62000b8760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160086000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000620007d662000b8760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550601554600660006200098a62000b1c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620009d862000b1c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60155460405162000a399190620011b6565b60405180910390a362001432565b600080830362000a5b576000905062000ac4565b6000828462000a6b91906200115a565b905082848262000a7c919062001202565b1462000abf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ab690620012c1565b60405180910390fd5b809150505b92915050565b600062000b1483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000bb060201b60201c565b905092915050565b600033905090565b600080828462000b359190620012e3565b90508381101562000b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b74906200136e565b60405180910390fd5b8091505092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000bfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bf191906200140e565b60405180910390fd5b506000838562000c0b919062001202565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c9a57607f821691505b60208210810362000cb05762000caf62000c52565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d1a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cdb565b62000d26868362000cdb565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d7362000d6d62000d678462000d3e565b62000d48565b62000d3e565b9050919050565b6000819050919050565b62000d8f8362000d52565b62000da762000d9e8262000d7a565b84845462000ce8565b825550505050565b600090565b62000dbe62000daf565b62000dcb81848462000d84565b505050565b5b8181101562000df35762000de760008262000db4565b60018101905062000dd1565b5050565b601f82111562000e425762000e0c8162000cb6565b62000e178462000ccb565b8101602085101562000e27578190505b62000e3f62000e368562000ccb565b83018262000dd0565b50505b505050565b600082821c905092915050565b600062000e676000198460080262000e47565b1980831691505092915050565b600062000e82838362000e54565b9150826002028217905092915050565b62000e9d8262000c18565b67ffffffffffffffff81111562000eb95762000eb862000c23565b5b62000ec5825462000c81565b62000ed282828562000df7565b600060209050601f83116001811462000f0a576000841562000ef5578287015190505b62000f01858262000e74565b86555062000f71565b601f19841662000f1a8662000cb6565b60005b8281101562000f445784890151825560018201915060208501945060208101905062000f1d565b8683101562000f64578489015162000f60601f89168262000e54565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620010075780860481111562000fdf5762000fde62000f79565b5b600185161562000fef5780820291505b808102905062000fff8562000fa8565b945062000fbf565b94509492505050565b600082620010225760019050620010f5565b81620010325760009050620010f5565b81600181146200104b576002811462001056576200108c565b6001915050620010f5565b60ff8411156200106b576200106a62000f79565b5b8360020a91508482111562001085576200108462000f79565b5b50620010f5565b5060208310610133831016604e8410600b8410161715620010c65782820a905083811115620010c057620010bf62000f79565b5b620010f5565b620010d5848484600162000fb5565b92509050818404811115620010ef57620010ee62000f79565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011168262000d3e565b91506200112383620010fc565b9250620011527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462001010565b905092915050565b6000620011678262000d3e565b9150620011748362000d3e565b9250828202620011848162000d3e565b915082820484148315176200119e576200119d62000f79565b5b5092915050565b620011b08162000d3e565b82525050565b6000602082019050620011cd6000830184620011a5565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200120f8262000d3e565b91506200121c8362000d3e565b9250826200122f576200122e620011d3565b5b828204905092915050565b600082825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000620012a96021836200123a565b9150620012b6826200124b565b604082019050919050565b60006020820190508181036000830152620012dc816200129a565b9050919050565b6000620012f08262000d3e565b9150620012fd8362000d3e565b925082820190508082111562001318576200131762000f79565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001356601b836200123a565b915062001363826200131e565b602082019050919050565b60006020820190508181036000830152620013898162001347565b9050919050565b60005b83811015620013b057808201518184015260208101905062001393565b60008484015250505050565b6000601f19601f8301169050919050565b6000620013da8262000c18565b620013e681856200123a565b9350620013f881856020860162001390565b6200140381620013bc565b840191505092915050565b600060208201905081810360008301526200142a8184620013cd565b905092915050565b60805160a0516156346200146660003960008181610fff015261149e01526000818161147201526114ca01526156346000f3fe6080604052600436106103a65760003560e01c8063844d591c116101e7578063c9c9afc51161010d578063ef422a18116100a0578063f680f7991161006f578063f680f79914610daf578063f6a2c5e514610dda578063f84ba65d14610de4578063f872858a14610e0d576103ad565b8063ef422a1814610d09578063f0cd1dac14610d32578063f1d5f51714610d5d578063f2fde38b14610d86576103ad565b8063dd62ed3e116100dc578063dd62ed3e14610c51578063e5c5369314610c8e578063ec28438a14610cb7578063ee828db314610ce0576103ad565b8063c9c9afc514610ba7578063d2d7ad8314610bd0578063da00097d14610bfb578063dc44b6a014610c26576103ad565b8063a457c2d711610185578063c5d2418911610154578063c5d2418914610ae9578063c816841b14610b14578063c860795214610b3f578063c867d60b14610b6a576103ad565b8063a457c2d714610a1d578063a5d69d1f14610a5a578063a9059cbb14610a83578063c49b9a8014610ac0576103ad565b80638b42507f116101c15780638b42507f1461095f5780638da5cb5b1461099c57806395d89b41146109c757806398e944c8146109f2576103ad565b8063844d591c146108e0578063852614851461090957806388790a6814610934576103ad565b8063313ce567116102cc57806370a082311161026a5780637d1db4a5116102395780637d1db4a514610822578063807c2d9c1461084d57806382eefb4314610878578063844783b7146108a3576103ad565b806370a082311461077a578063715018a6146107b7578063751039fc146107ce578063768dc710146107e5576103ad565b80634974d88f116102a65780634974d88f146106d25780634cb80fd5146106fb5780635194f9bf146107245780636ddd17131461074f576103ad565b8063313ce56714610641578063395093511461066c5780633b97084a146106a9576103ad565b806318160ddd1161034457806323555d571161031357806323555d571461058357806323b872dd146105ae57806327c8f835146105eb5780632b112e4914610616576103ad565b806318160ddd146104db5780631870517a146105065780631a95328f1461052f5780632198cf6c1461055a576103ad565b8063095ea7b311610380578063095ea7b3146104315780630ecb641a1461046e5780630f8540e4146104995780631694505e146104b0576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e38565b6040516103d4919061435b565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906143b8565b610eca565b005b34801561041257600080fd5b5061041b610ffd565b604051610428919061444c565b60405180910390f35b34801561043d57600080fd5b5061045860048036038101906104539190614493565b611021565b60405161046591906144ee565b60405180910390f35b34801561047a57600080fd5b5061048361103f565b604051610490919061452a565b60405180910390f35b3480156104a557600080fd5b506104ae611065565b005b3480156104bc57600080fd5b506104c5611117565b6040516104d291906145a4565b60405180910390f35b3480156104e757600080fd5b506104f061113d565b6040516104fd91906145ce565b60405180910390f35b34801561051257600080fd5b5061052d600480360381019061052891906143b8565b611147565b005b34801561053b57600080fd5b5061054461127a565b604051610551919061452a565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190614615565b6112a0565b005b34801561058f57600080fd5b50610598611390565b6040516105a591906145ce565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190614655565b611396565b6040516105e291906144ee565b60405180910390f35b3480156105f757600080fd5b50610600611470565b60405161060d919061444c565b60405180910390f35b34801561062257600080fd5b5061062b611494565b60405161063891906145ce565b60405180910390f35b34801561064d57600080fd5b50610656611512565b60405161066391906146c4565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190614493565b611529565b6040516106a091906144ee565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb91906146df565b6115dc565b005b3480156106de57600080fd5b506106f960048036038101906106f4919061470c565b611753565b005b34801561070757600080fd5b50610722600480360381019061071d9190614739565b611805565b005b34801561073057600080fd5b5061073961194d565b60405161074691906145ce565b60405180910390f35b34801561075b57600080fd5b50610764611953565b60405161077191906144ee565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c9190614739565b611966565b6040516107ae91906145ce565b60405180910390f35b3480156107c357600080fd5b506107cc6119af565b005b3480156107da57600080fd5b506107e3611b04565b005b3480156107f157600080fd5b5061080c60048036038101906108079190614739565b611bad565b60405161081991906144ee565b60405180910390f35b34801561082e57600080fd5b50610837611bcd565b60405161084491906145ce565b60405180910390f35b34801561085957600080fd5b50610862611bd3565b60405161086f91906145ce565b60405180910390f35b34801561088457600080fd5b5061088d611bd9565b60405161089a91906145ce565b60405180910390f35b3480156108af57600080fd5b506108ca60048036038101906108c59190614739565b611bdf565b6040516108d791906144ee565b60405180910390f35b3480156108ec57600080fd5b5061090760048036038101906109029190614615565b611bff565b005b34801561091557600080fd5b5061091e611cef565b60405161092b91906144ee565b60405180910390f35b34801561094057600080fd5b50610949611d02565b60405161095691906145ce565b60405180910390f35b34801561096b57600080fd5b5061098660048036038101906109819190614739565b611d08565b60405161099391906144ee565b60405180910390f35b3480156109a857600080fd5b506109b1611d28565b6040516109be919061444c565b60405180910390f35b3480156109d357600080fd5b506109dc611d51565b6040516109e9919061435b565b60405180910390f35b3480156109fe57600080fd5b50610a07611de3565b604051610a14919061444c565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f9190614493565b611e09565b604051610a5191906144ee565b60405180910390f35b348015610a6657600080fd5b50610a816004803603810190610a7c919061470c565b611ed6565b005b348015610a8f57600080fd5b50610aaa6004803603810190610aa59190614493565b611f88565b604051610ab791906144ee565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae2919061470c565b611fa7565b005b348015610af557600080fd5b50610afe612090565b604051610b0b91906145ce565b60405180910390f35b348015610b2057600080fd5b50610b29612096565b604051610b36919061444c565b60405180910390f35b348015610b4b57600080fd5b50610b546120bc565b604051610b6191906145ce565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190614739565b6120c2565b604051610b9e91906144ee565b60405180910390f35b348015610bb357600080fd5b50610bce6004803603810190610bc99190614739565b6120e2565b005b348015610bdc57600080fd5b50610be56121bb565b604051610bf291906145ce565b60405180910390f35b348015610c0757600080fd5b50610c106121c1565b604051610c1d91906144ee565b60405180910390f35b348015610c3257600080fd5b50610c3b6121d4565b604051610c4891906145ce565b60405180910390f35b348015610c5d57600080fd5b50610c786004803603810190610c739190614766565b6121da565b604051610c8591906145ce565b60405180910390f35b348015610c9a57600080fd5b50610cb56004803603810190610cb09190614739565b612261565b005b348015610cc357600080fd5b50610cde6004803603810190610cd991906146df565b6123a9565b005b348015610cec57600080fd5b50610d076004803603810190610d02919061470c565b6124b4565b005b348015610d1557600080fd5b50610d306004803603810190610d2b9190614615565b612566565b005b348015610d3e57600080fd5b50610d47612656565b604051610d5491906145ce565b60405180910390f35b348015610d6957600080fd5b50610d846004803603810190610d7f91906146df565b61265c565b005b348015610d9257600080fd5b50610dad6004803603810190610da89190614739565b6126fb565b005b348015610dbb57600080fd5b50610dc46128bc565b604051610dd191906145ce565b60405180910390f35b610de26128c2565b005b348015610df057600080fd5b50610e0b6004803603810190610e069190614615565b612ddd565b005b348015610e1957600080fd5b50610e22612ecd565b604051610e2f91906144ee565b60405180910390f35b606060018054610e47906147d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e73906147d5565b8015610ec05780601f10610e9557610100808354040283529160200191610ec0565b820191906000526020600020905b815481529060010190602001808311610ea357829003601f168201915b5050505050905090565b610ed2612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690614852565b60405180910390fd5b82600f819055508160108190555080601181905550610f9f601154610f91601054600f54612ee890919063ffffffff16565b612ee890919063ffffffff16565b6014819055506014601254610fb491906148d0565b6014541115610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef9061494d565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103561102e612ee0565b8484612f46565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61106d612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190614852565b60405180910390fd5b6001601a60196101000a81548160ff021916908315150217905550565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b61114f612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390614852565b60405180910390fd5b82600c8190555081600d8190555080600e8190555061121c600e5461120e600d54600c54612ee890919063ffffffff16565b612ee890919063ffffffff16565b601381905550601460125461123191906148d0565b6013541115611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c906149b9565b60405180910390fd5b505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112a8612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c90614852565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113a384848461310f565b50611465846113b0612ee0565b611460856040518060600160405280602881526020016155b260289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611416612ee0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138379092919063ffffffff16565b612f46565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061150d6114c27f0000000000000000000000000000000000000000000000000000000000000000611966565b6114ff6114ee7f0000000000000000000000000000000000000000000000000000000000000000611966565b60155461389b90919063ffffffff16565b61389b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006115d2611536612ee0565b846115cd8560076000611547612ee0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee890919063ffffffff16565b612f46565b6001905092915050565b6115e4612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890614852565b60405180910390fd5b61169c620186a061168e60016015546138e590919063ffffffff16565b61395f90919063ffffffff16565b8110156116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590614a4b565b60405180910390fd5b61170760646116f960016015546138e590919063ffffffff16565b61395f90919063ffffffff16565b811115611749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174090614add565b60405180910390fd5b8060168190555050565b61175b612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90614852565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b61180d612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090614b6f565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b601a60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119b7612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90614852565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b0c612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090614852565b60405180910390fd5b601554601781905550601554601881905550565b60086020528060005260406000206000915054906101000a900460ff1681565b60175481565b60185481565b60145481565b60096020528060005260406000206000915054906101000a900460ff1681565b611c07612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90614852565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611d60906147d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611d8c906147d5565b8015611dd95780601f10611dae57610100808354040283529160200191611dd9565b820191906000526020600020905b815481529060010190602001808311611dbc57829003601f168201915b5050505050905090565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611ecc611e16612ee0565b84611ec7856040518060600160405280602581526020016155da6025913960076000611e40612ee0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138379092919063ffffffff16565b612f46565b6001905092915050565b611ede612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6290614852565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b6000611f9c611f95612ee0565b848461310f565b506001905092915050565b611faf612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390614852565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161208591906144ee565b60405180910390a150565b600d5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b6120ea612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90614852565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612269612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed90614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235c90614b6f565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123b1612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243590614852565b60405180910390fd5b6124686103e861245a60016015546138e590919063ffffffff16565b61395f90919063ffffffff16565b8110156124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a190614c01565b60405180910390fd5b8060178190555050565b6124bc612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254090614852565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b61256e612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f290614852565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612664612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e890614852565b60405180910390fd5b8060188190555050565b612703612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f690614c93565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b6128ca612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294e90614852565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129df9190614cc8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a9190614cc8565b6040518363ffffffff1660e01b8152600401612a87929190614cf5565b6020604051808303816000875af1158015612aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aca9190614cc8565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430612d6e30611966565b60008033426040518863ffffffff1660e01b8152600401612d9496959493929190614d59565b60606040518083038185885af1158015612db2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dd79190614dcf565b50505050565b612de5612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6990614852565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600033905090565b6000808284612ef79190614e22565b905083811015612f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3390614ea2565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fac90614f34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301b90614fc6565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161310291906145ce565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361317f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317690615058565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e5906150ea565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061328f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132bd576132b68484846132a488886139a9565b6132ae57856132b1565b60005b613acf565b9050613830565b601a60199054906101000a900460ff1661330c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330390615156565b60405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133b05750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133c85750601a60189054906101000a900460ff165b1561341357601754821115613412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613409906151e8565b60405180910390fd5b5b600061341e30611966565b9050600060165482101590508080156134445750601a60149054906101000a900460ff16155b801561349a5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134b25750601a60159054906101000a900460ff165b156134dc57601a60169054906101000a900460ff16156134d25760165491505b6134db82613ca3565b5b613565846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138379092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061364b5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61365f5761365a878787613ce5565b613661565b845b9050601a60179054906101000a900460ff1680156136c95750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561372e576018546136ec826136de89611966565b612ee890919063ffffffff16565b111561372d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137249061527a565b60405180910390fd5b5b61378081600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee890919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161382091906145ce565b60405180910390a3600193505050505b9392505050565b600083831115829061387f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613876919061435b565b60405180910390fd5b506000838561388e919061529a565b9050809150509392505050565b60006138dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613837565b905092915050565b60008083036138f75760009050613959565b6000828461390591906152ce565b905082848261391491906148d0565b14613954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394b90615382565b60405180910390fd5b809150505b92915050565b60006139a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613fca565b905092915050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015613a555750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015613a8e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613ac75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6000613b5a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138379092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bef83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee890919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c8f91906145ce565b60405180910390a360019050949350505050565b6001601a60146101000a81548160ff021916908315150217905550613cc78161402d565b6000601a60146101000a81548160ff02191690831515021790555050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613d4391906153c3565b602060405180830381865afa158015613d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8491906153de565b9050600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e0a57613e036064613df5601354886138e590919063ffffffff16565b61395f90919063ffffffff16565b9150613ea7565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613e7657506000613e73848361389b90919063ffffffff16565b10155b15613ea657613ea36064613e95601454886138e590919063ffffffff16565b61395f90919063ffffffff16565b91505b5b6000821115613fab57613f0282600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee890919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fa291906145ce565b60405180910390a35b613fbe828661389b90919063ffffffff16565b93505050509392505050565b60008083118290614011576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614008919061435b565b60405180910390fd5b506000838561402091906148d0565b9050809150509392505050565b6000600267ffffffffffffffff81111561404a5761404961540b565b5b6040519080825280602002602001820160405280156140785781602001602082028036833780820191505090505b50905030816000815181106140905761408f61543a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415b9190614cc8565b8160018151811061416f5761416e61543a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d630601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f46565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161425c959493929190615527565b600060405180830381600087803b15801561427657600080fd5b505af115801561428a573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516142bf929190615581565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143055780820151818401526020810190506142ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061432d826142cb565b61433781856142d6565b93506143478185602086016142e7565b61435081614311565b840191505092915050565b600060208201905081810360008301526143758184614322565b905092915050565b600080fd5b6000819050919050565b61439581614382565b81146143a057600080fd5b50565b6000813590506143b28161438c565b92915050565b6000806000606084860312156143d1576143d061437d565b5b60006143df868287016143a3565b93505060206143f0868287016143a3565b9250506040614401868287016143a3565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144368261440b565b9050919050565b6144468161442b565b82525050565b6000602082019050614461600083018461443d565b92915050565b6144708161442b565b811461447b57600080fd5b50565b60008135905061448d81614467565b92915050565b600080604083850312156144aa576144a961437d565b5b60006144b88582860161447e565b92505060206144c9858286016143a3565b9150509250929050565b60008115159050919050565b6144e8816144d3565b82525050565b600060208201905061450360008301846144df565b92915050565b60006145148261440b565b9050919050565b61452481614509565b82525050565b600060208201905061453f600083018461451b565b92915050565b6000819050919050565b600061456a6145656145608461440b565b614545565b61440b565b9050919050565b600061457c8261454f565b9050919050565b600061458e82614571565b9050919050565b61459e81614583565b82525050565b60006020820190506145b96000830184614595565b92915050565b6145c881614382565b82525050565b60006020820190506145e360008301846145bf565b92915050565b6145f2816144d3565b81146145fd57600080fd5b50565b60008135905061460f816145e9565b92915050565b6000806040838503121561462c5761462b61437d565b5b600061463a8582860161447e565b925050602061464b85828601614600565b9150509250929050565b60008060006060848603121561466e5761466d61437d565b5b600061467c8682870161447e565b935050602061468d8682870161447e565b925050604061469e868287016143a3565b9150509250925092565b600060ff82169050919050565b6146be816146a8565b82525050565b60006020820190506146d960008301846146b5565b92915050565b6000602082840312156146f5576146f461437d565b5b6000614703848285016143a3565b91505092915050565b6000602082840312156147225761472161437d565b5b600061473084828501614600565b91505092915050565b60006020828403121561474f5761474e61437d565b5b600061475d8482850161447e565b91505092915050565b6000806040838503121561477d5761477c61437d565b5b600061478b8582860161447e565b925050602061479c8582860161447e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147ed57607f821691505b602082108103614800576147ff6147a6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061483c6020836142d6565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148db82614382565b91506148e683614382565b9250826148f6576148f5614872565b5b828204905092915050565b7f53656c6c2066656573206d757374206265203525206f72206c65737300000000600082015250565b6000614937601c836142d6565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f4275792066656573206d757374206265203525206f72206c6573730000000000600082015250565b60006149a3601b836142d6565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f206c6f776572207468616e20302e30303125206f6620746f6b656e7300000000602082015250565b6000614a35603c836142d6565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f20686967686572207468616e203125206f6620746f6b656e7300000000000000602082015250565b6000614ac76039836142d6565b9150614ad282614a6b565b604082019050919050565b60006020820190508181036000830152614af681614aba565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b596022836142d6565b9150614b6482614afd565b604082019050919050565b60006020820190508181036000830152614b8881614b4c565b9050919050565b7f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460008201527f68616e20302c3125206f6620746f74616c20737570706c790000000000000000602082015250565b6000614beb6038836142d6565b9150614bf682614b8f565b604082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c7d6026836142d6565b9150614c8882614c21565b604082019050919050565b60006020820190508181036000830152614cac81614c70565b9050919050565b600081519050614cc281614467565b92915050565b600060208284031215614cde57614cdd61437d565b5b6000614cec84828501614cb3565b91505092915050565b6000604082019050614d0a600083018561443d565b614d17602083018461443d565b9392505050565b6000819050919050565b6000614d43614d3e614d3984614d1e565b614545565b614382565b9050919050565b614d5381614d28565b82525050565b600060c082019050614d6e600083018961443d565b614d7b60208301886145bf565b614d886040830187614d4a565b614d956060830186614d4a565b614da2608083018561443d565b614daf60a08301846145bf565b979650505050505050565b600081519050614dc98161438c565b92915050565b600080600060608486031215614de857614de761437d565b5b6000614df686828701614dba565b9350506020614e0786828701614dba565b9250506040614e1886828701614dba565b9150509250925092565b6000614e2d82614382565b9150614e3883614382565b9250828201905080821115614e5057614e4f6148a1565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e8c601b836142d6565b9150614e9782614e56565b602082019050919050565b60006020820190508181036000830152614ebb81614e7f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f1e6024836142d6565b9150614f2982614ec2565b604082019050919050565b60006020820190508181036000830152614f4d81614f11565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fb06022836142d6565b9150614fbb82614f54565b604082019050919050565b60006020820190508181036000830152614fdf81614fa3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150426025836142d6565b915061504d82614fe6565b604082019050919050565b6000602082019050818103600083015261507181615035565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150d46023836142d6565b91506150df82615078565b604082019050919050565b60006020820190508181036000830152615103816150c7565b9050919050565b7f54726164696e6720686173206e6f7420656e61626c6564207965742e00000000600082015250565b6000615140601c836142d6565b915061514b8261510a565b602082019050919050565b6000602082019050818103600083015261516f81615133565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006151d26028836142d6565b91506151dd82615176565b604082019050919050565b60006020820190508181036000830152615201816151c5565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006152646025836142d6565b915061526f82615208565b604082019050919050565b6000602082019050818103600083015261529381615257565b9050919050565b60006152a582614382565b91506152b083614382565b92508282039050818111156152c8576152c76148a1565b5b92915050565b60006152d982614382565b91506152e483614382565b92508282026152f281614382565b91508282048414831517615309576153086148a1565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061536c6021836142d6565b915061537782615310565b604082019050919050565b6000602082019050818103600083015261539b8161535f565b9050919050565b60006153ad82614571565b9050919050565b6153bd816153a2565b82525050565b60006020820190506153d860008301846153b4565b92915050565b6000602082840312156153f4576153f361437d565b5b600061540284828501614dba565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61549e8161442b565b82525050565b60006154b08383615495565b60208301905092915050565b6000602082019050919050565b60006154d482615469565b6154de8185615474565b93506154e983615485565b8060005b8381101561551a57815161550188826154a4565b975061550c836154bc565b9250506001810190506154ed565b5085935050505092915050565b600060a08201905061553c60008301886145bf565b6155496020830187614d4a565b818103604083015261555b81866154c9565b905061556a60608301856153b4565b61557760808301846145bf565b9695505050505050565b600060408201905061559660008301856145bf565b81810360208301526155a881846154c9565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f69e2193d80ee0faf9469cb55f6d4726d2c8c7c67c73dc322be841e8f1de4f1d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106103a65760003560e01c8063844d591c116101e7578063c9c9afc51161010d578063ef422a18116100a0578063f680f7991161006f578063f680f79914610daf578063f6a2c5e514610dda578063f84ba65d14610de4578063f872858a14610e0d576103ad565b8063ef422a1814610d09578063f0cd1dac14610d32578063f1d5f51714610d5d578063f2fde38b14610d86576103ad565b8063dd62ed3e116100dc578063dd62ed3e14610c51578063e5c5369314610c8e578063ec28438a14610cb7578063ee828db314610ce0576103ad565b8063c9c9afc514610ba7578063d2d7ad8314610bd0578063da00097d14610bfb578063dc44b6a014610c26576103ad565b8063a457c2d711610185578063c5d2418911610154578063c5d2418914610ae9578063c816841b14610b14578063c860795214610b3f578063c867d60b14610b6a576103ad565b8063a457c2d714610a1d578063a5d69d1f14610a5a578063a9059cbb14610a83578063c49b9a8014610ac0576103ad565b80638b42507f116101c15780638b42507f1461095f5780638da5cb5b1461099c57806395d89b41146109c757806398e944c8146109f2576103ad565b8063844d591c146108e0578063852614851461090957806388790a6814610934576103ad565b8063313ce567116102cc57806370a082311161026a5780637d1db4a5116102395780637d1db4a514610822578063807c2d9c1461084d57806382eefb4314610878578063844783b7146108a3576103ad565b806370a082311461077a578063715018a6146107b7578063751039fc146107ce578063768dc710146107e5576103ad565b80634974d88f116102a65780634974d88f146106d25780634cb80fd5146106fb5780635194f9bf146107245780636ddd17131461074f576103ad565b8063313ce56714610641578063395093511461066c5780633b97084a146106a9576103ad565b806318160ddd1161034457806323555d571161031357806323555d571461058357806323b872dd146105ae57806327c8f835146105eb5780632b112e4914610616576103ad565b806318160ddd146104db5780631870517a146105065780631a95328f1461052f5780632198cf6c1461055a576103ad565b8063095ea7b311610380578063095ea7b3146104315780630ecb641a1461046e5780630f8540e4146104995780631694505e146104b0576103ad565b806306fdde03146103b257806308733214146103dd5780630930907b14610406576103ad565b366103ad57005b600080fd5b3480156103be57600080fd5b506103c7610e38565b6040516103d4919061435b565b60405180910390f35b3480156103e957600080fd5b5061040460048036038101906103ff91906143b8565b610eca565b005b34801561041257600080fd5b5061041b610ffd565b604051610428919061444c565b60405180910390f35b34801561043d57600080fd5b5061045860048036038101906104539190614493565b611021565b60405161046591906144ee565b60405180910390f35b34801561047a57600080fd5b5061048361103f565b604051610490919061452a565b60405180910390f35b3480156104a557600080fd5b506104ae611065565b005b3480156104bc57600080fd5b506104c5611117565b6040516104d291906145a4565b60405180910390f35b3480156104e757600080fd5b506104f061113d565b6040516104fd91906145ce565b60405180910390f35b34801561051257600080fd5b5061052d600480360381019061052891906143b8565b611147565b005b34801561053b57600080fd5b5061054461127a565b604051610551919061452a565b60405180910390f35b34801561056657600080fd5b50610581600480360381019061057c9190614615565b6112a0565b005b34801561058f57600080fd5b50610598611390565b6040516105a591906145ce565b60405180910390f35b3480156105ba57600080fd5b506105d560048036038101906105d09190614655565b611396565b6040516105e291906144ee565b60405180910390f35b3480156105f757600080fd5b50610600611470565b60405161060d919061444c565b60405180910390f35b34801561062257600080fd5b5061062b611494565b60405161063891906145ce565b60405180910390f35b34801561064d57600080fd5b50610656611512565b60405161066391906146c4565b60405180910390f35b34801561067857600080fd5b50610693600480360381019061068e9190614493565b611529565b6040516106a091906144ee565b60405180910390f35b3480156106b557600080fd5b506106d060048036038101906106cb91906146df565b6115dc565b005b3480156106de57600080fd5b506106f960048036038101906106f4919061470c565b611753565b005b34801561070757600080fd5b50610722600480360381019061071d9190614739565b611805565b005b34801561073057600080fd5b5061073961194d565b60405161074691906145ce565b60405180910390f35b34801561075b57600080fd5b50610764611953565b60405161077191906144ee565b60405180910390f35b34801561078657600080fd5b506107a1600480360381019061079c9190614739565b611966565b6040516107ae91906145ce565b60405180910390f35b3480156107c357600080fd5b506107cc6119af565b005b3480156107da57600080fd5b506107e3611b04565b005b3480156107f157600080fd5b5061080c60048036038101906108079190614739565b611bad565b60405161081991906144ee565b60405180910390f35b34801561082e57600080fd5b50610837611bcd565b60405161084491906145ce565b60405180910390f35b34801561085957600080fd5b50610862611bd3565b60405161086f91906145ce565b60405180910390f35b34801561088457600080fd5b5061088d611bd9565b60405161089a91906145ce565b60405180910390f35b3480156108af57600080fd5b506108ca60048036038101906108c59190614739565b611bdf565b6040516108d791906144ee565b60405180910390f35b3480156108ec57600080fd5b5061090760048036038101906109029190614615565b611bff565b005b34801561091557600080fd5b5061091e611cef565b60405161092b91906144ee565b60405180910390f35b34801561094057600080fd5b50610949611d02565b60405161095691906145ce565b60405180910390f35b34801561096b57600080fd5b5061098660048036038101906109819190614739565b611d08565b60405161099391906144ee565b60405180910390f35b3480156109a857600080fd5b506109b1611d28565b6040516109be919061444c565b60405180910390f35b3480156109d357600080fd5b506109dc611d51565b6040516109e9919061435b565b60405180910390f35b3480156109fe57600080fd5b50610a07611de3565b604051610a14919061444c565b60405180910390f35b348015610a2957600080fd5b50610a446004803603810190610a3f9190614493565b611e09565b604051610a5191906144ee565b60405180910390f35b348015610a6657600080fd5b50610a816004803603810190610a7c919061470c565b611ed6565b005b348015610a8f57600080fd5b50610aaa6004803603810190610aa59190614493565b611f88565b604051610ab791906144ee565b60405180910390f35b348015610acc57600080fd5b50610ae76004803603810190610ae2919061470c565b611fa7565b005b348015610af557600080fd5b50610afe612090565b604051610b0b91906145ce565b60405180910390f35b348015610b2057600080fd5b50610b29612096565b604051610b36919061444c565b60405180910390f35b348015610b4b57600080fd5b50610b546120bc565b604051610b6191906145ce565b60405180910390f35b348015610b7657600080fd5b50610b916004803603810190610b8c9190614739565b6120c2565b604051610b9e91906144ee565b60405180910390f35b348015610bb357600080fd5b50610bce6004803603810190610bc99190614739565b6120e2565b005b348015610bdc57600080fd5b50610be56121bb565b604051610bf291906145ce565b60405180910390f35b348015610c0757600080fd5b50610c106121c1565b604051610c1d91906144ee565b60405180910390f35b348015610c3257600080fd5b50610c3b6121d4565b604051610c4891906145ce565b60405180910390f35b348015610c5d57600080fd5b50610c786004803603810190610c739190614766565b6121da565b604051610c8591906145ce565b60405180910390f35b348015610c9a57600080fd5b50610cb56004803603810190610cb09190614739565b612261565b005b348015610cc357600080fd5b50610cde6004803603810190610cd991906146df565b6123a9565b005b348015610cec57600080fd5b50610d076004803603810190610d02919061470c565b6124b4565b005b348015610d1557600080fd5b50610d306004803603810190610d2b9190614615565b612566565b005b348015610d3e57600080fd5b50610d47612656565b604051610d5491906145ce565b60405180910390f35b348015610d6957600080fd5b50610d846004803603810190610d7f91906146df565b61265c565b005b348015610d9257600080fd5b50610dad6004803603810190610da89190614739565b6126fb565b005b348015610dbb57600080fd5b50610dc46128bc565b604051610dd191906145ce565b60405180910390f35b610de26128c2565b005b348015610df057600080fd5b50610e0b6004803603810190610e069190614615565b612ddd565b005b348015610e1957600080fd5b50610e22612ecd565b604051610e2f91906144ee565b60405180910390f35b606060018054610e47906147d5565b80601f0160208091040260200160405190810160405280929190818152602001828054610e73906147d5565b8015610ec05780601f10610e9557610100808354040283529160200191610ec0565b820191906000526020600020905b815481529060010190602001808311610ea357829003601f168201915b5050505050905090565b610ed2612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f5690614852565b60405180910390fd5b82600f819055508160108190555080601181905550610f9f601154610f91601054600f54612ee890919063ffffffff16565b612ee890919063ffffffff16565b6014819055506014601254610fb491906148d0565b6014541115610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef9061494d565b60405180910390fd5b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061103561102e612ee0565b8484612f46565b6001905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61106d612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190614852565b60405180910390fd5b6001601a60196101000a81548160ff021916908315150217905550565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601554905090565b61114f612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d390614852565b60405180910390fd5b82600c8190555081600d8190555080600e8190555061121c600e5461120e600d54600c54612ee890919063ffffffff16565b612ee890919063ffffffff16565b601381905550601460125461123191906148d0565b6013541115611275576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126c906149b9565b60405180910390fd5b505050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112a8612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611335576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132c90614852565b60405180910390fd5b80600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600e5481565b60006113a384848461310f565b50611465846113b0612ee0565b611460856040518060600160405280602881526020016155b260289139600760008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000611416612ee0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138379092919063ffffffff16565b612f46565b600190509392505050565b7f000000000000000000000000000000000000000000000000000000000000dead81565b600061150d6114c27f0000000000000000000000000000000000000000000000000000000000000000611966565b6114ff6114ee7f000000000000000000000000000000000000000000000000000000000000dead611966565b60155461389b90919063ffffffff16565b61389b90919063ffffffff16565b905090565b6000600360009054906101000a900460ff16905090565b60006115d2611536612ee0565b846115cd8560076000611547612ee0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee890919063ffffffff16565b612f46565b6001905092915050565b6115e4612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166890614852565b60405180910390fd5b61169c620186a061168e60016015546138e590919063ffffffff16565b61395f90919063ffffffff16565b8110156116de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d590614a4b565b60405180910390fd5b61170760646116f960016015546138e590919063ffffffff16565b61395f90919063ffffffff16565b811115611749576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174090614add565b60405180910390fd5b8060168190555050565b61175b612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146117e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117df90614852565b60405180910390fd5b80601a60176101000a81548160ff02191690831515021790555050565b61180d612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090614b6f565b60405180910390fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60115481565b601a60159054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6119b7612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a44576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3b90614852565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b611b0c612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9090614852565b60405180910390fd5b601554601781905550601554601881905550565b60086020528060005260406000206000915054906101000a900460ff1681565b60175481565b60185481565b60145481565b60096020528060005260406000206000915054906101000a900460ff1681565b611c07612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8b90614852565b60405180910390fd5b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60189054906101000a900460ff1681565b600f5481565b600b6020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060028054611d60906147d5565b80601f0160208091040260200160405190810160405280929190818152602001828054611d8c906147d5565b8015611dd95780601f10611dae57610100808354040283529160200191611dd9565b820191906000526020600020905b815481529060010190602001808311611dbc57829003601f168201915b5050505050905090565b600360019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611ecc611e16612ee0565b84611ec7856040518060600160405280602581526020016155da6025913960076000611e40612ee0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138379092919063ffffffff16565b612f46565b6001905092915050565b611ede612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6290614852565b60405180910390fd5b80601a60166101000a81548160ff02191690831515021790555050565b6000611f9c611f95612ee0565b848461310f565b506001905092915050565b611faf612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461203c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161203390614852565b60405180910390fd5b80601a60156101000a81548160ff0219169083151502179055507f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1598160405161208591906144ee565b60405180910390a150565b600d5481565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60105481565b600a6020528060005260406000206000915054906101000a900460ff1681565b6120ea612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e90614852565b60405180910390fd5b80600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b601a60169054906101000a900460ff1681565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612269612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122ed90614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235c90614b6f565b60405180910390fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6123b1612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461243e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243590614852565b60405180910390fd5b6124686103e861245a60016015546138e590919063ffffffff16565b61395f90919063ffffffff16565b8110156124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a190614c01565b60405180910390fd5b8060178190555050565b6124bc612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612549576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161254090614852565b60405180910390fd5b80601a60186101000a81548160ff02191690831515021790555050565b61256e612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146125fb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f290614852565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60135481565b612664612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126e890614852565b60405180910390fd5b8060188190555050565b612703612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612790576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278790614852565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f690614c93565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60125481565b6128ca612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294e90614852565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129df9190614cc8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a46573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a6a9190614cc8565b6040518363ffffffff1660e01b8152600401612a87929190614cf5565b6020604051808303816000875af1158015612aa6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aca9190614cc8565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160096000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033600360016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430612d6e30611966565b60008033426040518863ffffffff1660e01b8152600401612d9496959493929190614d59565b60606040518083038185885af1158015612db2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dd79190614dcf565b50505050565b612de5612ee0565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612e72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e6990614852565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601a60179054906101000a900460ff1681565b600033905090565b6000808284612ef79190614e22565b905083811015612f3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f3390614ea2565b60405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612fb5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612fac90614f34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613024576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161301b90614fc6565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161310291906145ce565b60405180910390a3505050565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361317f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161317690615058565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036131ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e5906150ea565b60405180910390fd5b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061328f5750600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156132bd576132b68484846132a488886139a9565b6132ae57856132b1565b60005b613acf565b9050613830565b601a60199054906101000a900460ff1661330c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330390615156565b60405180910390fd5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156133b05750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156133c85750601a60189054906101000a900460ff165b1561341357601754821115613412576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613409906151e8565b60405180910390fd5b5b600061341e30611966565b9050600060165482101590508080156134445750601a60149054906101000a900460ff16155b801561349a5750600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156134b25750601a60159054906101000a900460ff165b156134dc57601a60169054906101000a900460ff16156134d25760165491505b6134db82613ca3565b5b613565846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138379092919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061364b5750600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61365f5761365a878787613ce5565b613661565b845b9050601a60179054906101000a900460ff1680156136c95750600a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561372e576018546136ec826136de89611966565b612ee890919063ffffffff16565b111561372d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137249061527a565b60405180910390fd5b5b61378081600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee890919063ffffffff16565b600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161382091906145ce565b60405180910390a3600193505050505b9392505050565b600083831115829061387f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613876919061435b565b60405180910390fd5b506000838561388e919061529a565b9050809150509392505050565b60006138dd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613837565b905092915050565b60008083036138f75760009050613959565b6000828461390591906152ce565b905082848261391491906148d0565b14613954576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161394b90615382565b60405180910390fd5b809150505b92915050565b60006139a183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613fca565b905092915050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015613a555750600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015613a8e5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015613ac75750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b905092915050565b6000613b5a826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546138379092919063ffffffff16565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613bef83600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee890919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef85604051613c8f91906145ce565b60405180910390a360019050949350505050565b6001601a60146101000a81548160ff021916908315150217905550613cc78161402d565b6000601a60146101000a81548160ff02191690831515021790555050565b6000803073ffffffffffffffffffffffffffffffffffffffff166370a08231600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b8152600401613d4391906153c3565b602060405180830381865afa158015613d60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613d8491906153de565b9050600080600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613e0a57613e036064613df5601354886138e590919063ffffffff16565b61395f90919063ffffffff16565b9150613ea7565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015613e7657506000613e73848361389b90919063ffffffff16565b10155b15613ea657613ea36064613e95601454886138e590919063ffffffff16565b61395f90919063ffffffff16565b91505b5b6000821115613fab57613f0282600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612ee890919063ffffffff16565b600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613fa291906145ce565b60405180910390a35b613fbe828661389b90919063ffffffff16565b93505050509392505050565b60008083118290614011576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614008919061435b565b60405180910390fd5b506000838561402091906148d0565b9050809150509392505050565b6000600267ffffffffffffffff81111561404a5761404961540b565b5b6040519080825280602002602001820160405280156140785781602001602082028036833780820191505090505b50905030816000815181106140905761408f61543a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015614137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061415b9190614cc8565b8160018151811061416f5761416e61543a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506141d630601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684612f46565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b815260040161425c959493929190615527565b600060405180830381600087803b15801561427657600080fd5b505af115801561428a573d6000803e3d6000fd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a782826040516142bf929190615581565b60405180910390a15050565b600081519050919050565b600082825260208201905092915050565b60005b838110156143055780820151818401526020810190506142ea565b60008484015250505050565b6000601f19601f8301169050919050565b600061432d826142cb565b61433781856142d6565b93506143478185602086016142e7565b61435081614311565b840191505092915050565b600060208201905081810360008301526143758184614322565b905092915050565b600080fd5b6000819050919050565b61439581614382565b81146143a057600080fd5b50565b6000813590506143b28161438c565b92915050565b6000806000606084860312156143d1576143d061437d565b5b60006143df868287016143a3565b93505060206143f0868287016143a3565b9250506040614401868287016143a3565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006144368261440b565b9050919050565b6144468161442b565b82525050565b6000602082019050614461600083018461443d565b92915050565b6144708161442b565b811461447b57600080fd5b50565b60008135905061448d81614467565b92915050565b600080604083850312156144aa576144a961437d565b5b60006144b88582860161447e565b92505060206144c9858286016143a3565b9150509250929050565b60008115159050919050565b6144e8816144d3565b82525050565b600060208201905061450360008301846144df565b92915050565b60006145148261440b565b9050919050565b61452481614509565b82525050565b600060208201905061453f600083018461451b565b92915050565b6000819050919050565b600061456a6145656145608461440b565b614545565b61440b565b9050919050565b600061457c8261454f565b9050919050565b600061458e82614571565b9050919050565b61459e81614583565b82525050565b60006020820190506145b96000830184614595565b92915050565b6145c881614382565b82525050565b60006020820190506145e360008301846145bf565b92915050565b6145f2816144d3565b81146145fd57600080fd5b50565b60008135905061460f816145e9565b92915050565b6000806040838503121561462c5761462b61437d565b5b600061463a8582860161447e565b925050602061464b85828601614600565b9150509250929050565b60008060006060848603121561466e5761466d61437d565b5b600061467c8682870161447e565b935050602061468d8682870161447e565b925050604061469e868287016143a3565b9150509250925092565b600060ff82169050919050565b6146be816146a8565b82525050565b60006020820190506146d960008301846146b5565b92915050565b6000602082840312156146f5576146f461437d565b5b6000614703848285016143a3565b91505092915050565b6000602082840312156147225761472161437d565b5b600061473084828501614600565b91505092915050565b60006020828403121561474f5761474e61437d565b5b600061475d8482850161447e565b91505092915050565b6000806040838503121561477d5761477c61437d565b5b600061478b8582860161447e565b925050602061479c8582860161447e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806147ed57607f821691505b602082108103614800576147ff6147a6565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061483c6020836142d6565b915061484782614806565b602082019050919050565b6000602082019050818103600083015261486b8161482f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006148db82614382565b91506148e683614382565b9250826148f6576148f5614872565b5b828204905092915050565b7f53656c6c2066656573206d757374206265203525206f72206c65737300000000600082015250565b6000614937601c836142d6565b915061494282614901565b602082019050919050565b600060208201905081810360008301526149668161492a565b9050919050565b7f4275792066656573206d757374206265203525206f72206c6573730000000000600082015250565b60006149a3601b836142d6565b91506149ae8261496d565b602082019050919050565b600060208201905081810360008301526149d281614996565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f206c6f776572207468616e20302e30303125206f6620746f6b656e7300000000602082015250565b6000614a35603c836142d6565b9150614a40826149d9565b604082019050919050565b60006020820190508181036000830152614a6481614a28565b9050919050565b7f43616e6e6f74207365742073776170207468726573686f6c6420616d6f756e7460008201527f20686967686572207468616e203125206f6620746f6b656e7300000000000000602082015250565b6000614ac76039836142d6565b9150614ad282614a6b565b604082019050919050565b60006020820190508181036000830152614af681614aba565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614b596022836142d6565b9150614b6482614afd565b604082019050919050565b60006020820190508181036000830152614b8881614b4c565b9050919050565b7f43616e6e6f7420736574206d617820545820616d6f756e74206c6f776572207460008201527f68616e20302c3125206f6620746f74616c20737570706c790000000000000000602082015250565b6000614beb6038836142d6565b9150614bf682614b8f565b604082019050919050565b60006020820190508181036000830152614c1a81614bde565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614c7d6026836142d6565b9150614c8882614c21565b604082019050919050565b60006020820190508181036000830152614cac81614c70565b9050919050565b600081519050614cc281614467565b92915050565b600060208284031215614cde57614cdd61437d565b5b6000614cec84828501614cb3565b91505092915050565b6000604082019050614d0a600083018561443d565b614d17602083018461443d565b9392505050565b6000819050919050565b6000614d43614d3e614d3984614d1e565b614545565b614382565b9050919050565b614d5381614d28565b82525050565b600060c082019050614d6e600083018961443d565b614d7b60208301886145bf565b614d886040830187614d4a565b614d956060830186614d4a565b614da2608083018561443d565b614daf60a08301846145bf565b979650505050505050565b600081519050614dc98161438c565b92915050565b600080600060608486031215614de857614de761437d565b5b6000614df686828701614dba565b9350506020614e0786828701614dba565b9250506040614e1886828701614dba565b9150509250925092565b6000614e2d82614382565b9150614e3883614382565b9250828201905080821115614e5057614e4f6148a1565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000614e8c601b836142d6565b9150614e9782614e56565b602082019050919050565b60006020820190508181036000830152614ebb81614e7f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000614f1e6024836142d6565b9150614f2982614ec2565b604082019050919050565b60006020820190508181036000830152614f4d81614f11565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000614fb06022836142d6565b9150614fbb82614f54565b604082019050919050565b60006020820190508181036000830152614fdf81614fa3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006150426025836142d6565b915061504d82614fe6565b604082019050919050565b6000602082019050818103600083015261507181615035565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006150d46023836142d6565b91506150df82615078565b604082019050919050565b60006020820190508181036000830152615103816150c7565b9050919050565b7f54726164696e6720686173206e6f7420656e61626c6564207965742e00000000600082015250565b6000615140601c836142d6565b915061514b8261510a565b602082019050919050565b6000602082019050818103600083015261516f81615133565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006151d26028836142d6565b91506151dd82615176565b604082019050919050565b60006020820190508181036000830152615201816151c5565b9050919050565b7f416d6f756e74204578636565642046726f6d204d61782057616c6c6574204c6960008201527f6d69742121000000000000000000000000000000000000000000000000000000602082015250565b60006152646025836142d6565b915061526f82615208565b604082019050919050565b6000602082019050818103600083015261529381615257565b9050919050565b60006152a582614382565b91506152b083614382565b92508282039050818111156152c8576152c76148a1565b5b92915050565b60006152d982614382565b91506152e483614382565b92508282026152f281614382565b91508282048414831517615309576153086148a1565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061536c6021836142d6565b915061537782615310565b604082019050919050565b6000602082019050818103600083015261539b8161535f565b9050919050565b60006153ad82614571565b9050919050565b6153bd816153a2565b82525050565b60006020820190506153d860008301846153b4565b92915050565b6000602082840312156153f4576153f361437d565b5b600061540284828501614dba565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61549e8161442b565b82525050565b60006154b08383615495565b60208301905092915050565b6000602082019050919050565b60006154d482615469565b6154de8185615474565b93506154e983615485565b8060005b8381101561551a57815161550188826154a4565b975061550c836154bc565b9250506001810190506154ed565b5085935050505092915050565b600060a08201905061553c60008301886145bf565b6155496020830187614d4a565b818103604083015261555b81866154c9565b905061556a60608301856153b4565b61557760808301846145bf565b9695505050505050565b600060408201905061559660008301856145bf565b81810360208301526155a881846154c9565b9050939250505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f69e2193d80ee0faf9469cb55f6d4726d2c8c7c67c73dc322be841e8f1de4f1d64736f6c63430008130033

Deployed Bytecode Sourcemap

11618:14549:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14854:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25750:404;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11976:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16020:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12159:90;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20444:77;;;;;;;;;;;;;:::i;:::-;;13303:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15131:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25348:394;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12066:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16955:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12698:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20121:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11888:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18938:156;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15040:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15517:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17680:374;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17566:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18062:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12832:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13420:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15239:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3295:230;;;;;;;;;;;;;:::i;:::-;;19771:122;;;;;;;;;;;;;:::i;:::-;;12381:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13156:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13229:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12954:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12439:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16534:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13553:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12746:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12557:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3070:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14945:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11843:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15743:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18801:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19946:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18632:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12656:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13351:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12789:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12498:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18277:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13068:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13457:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12614:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15366:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18419:205;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17098:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17451:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16672:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12915:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17341:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3533:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12877:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24603:739;;;:::i;:::-;;16816:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13511:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14854:83;14891:13;14924:5;14917:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14854:83;:::o;25750:404::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25872:10:::1;25852:17;:30;;;;25913:10;25893:17;:30;;;;25954:10;25934:17;:30;;;;25996:63;26041:17;;25996:40;26018:17;;25996;;:21;;:40;;;;:::i;:::-;:44;;:63;;;;:::i;:::-;25975:18;:84;;;;26110:2;26101:8;;:11;;;;:::i;:::-;26078:18;;:35;;26070:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;25750:404:::0;;;:::o;11976:81::-;;;:::o;16020:161::-;16095:4;16112:39;16121:12;:10;:12::i;:::-;16135:7;16144:6;16112:8;:39::i;:::-;16169:4;16162:11;;16020:161;;;;:::o;12159:90::-;;;;;;;;;;;;;:::o;20444:77::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20509:4:::1;20495:11;;:18;;;;;;;;;;;;;;;;;;20444:77::o:0;13303:41::-;;;;;;;;;;;;;:::o;15131:100::-;15184:7;15211:12;;15204:19;;15131:100;:::o;25348:394::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;25468:10:::1;25449:16;:29;;;;25508:10;25489:16;:29;;;;25548:10;25529:16;:29;;;;25589:60;25632:16;;25589:38;25610:16;;25589;;:20;;:38;;;;:::i;:::-;:42;;:60;;;;:::i;:::-;25569:17;:80;;;;25699:2;25690:8;;:11;;;;:::i;:::-;25668:17;;:34;;25660:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;25348:394:::0;;;:::o;12066:86::-;;;;;;;;;;;;;:::o;16955:135::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17076:6:::1;17046:19;:27;17066:6;17046:27;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;16955:135:::0;;:::o;12698:35::-;;;;:::o;20121:313::-;20219:4;20236:36;20246:6;20254:9;20265:6;20236:9;:36::i;:::-;;20283:121;20292:6;20300:12;:10;:12::i;:::-;20314:89;20352:6;20314:89;;;;;;;;;;;;;;;;;:11;:19;20326:6;20314:19;;;;;;;;;;;;;;;:33;20334:12;:10;:12::i;:::-;20314:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;20283:8;:121::i;:::-;20422:4;20415:11;;20121:313;;;;;:::o;11888:81::-;;;:::o;18938:156::-;18991:7;19018:68;19063:22;19073:11;19063:9;:22::i;:::-;19018:40;19035:22;19045:11;19035:9;:22::i;:::-;19018:12;;:16;;:40;;;;:::i;:::-;:44;;:68;;;;:::i;:::-;19011:75;;18938:156;:::o;15040:83::-;15081:5;15106:9;;;;;;;;;;;15099:16;;15040:83;:::o;15517:218::-;15605:4;15622:83;15631:12;:10;:12::i;:::-;15645:7;15654:50;15693:10;15654:11;:25;15666:12;:10;:12::i;:::-;15654:25;;;;;;;;;;;;;;;:34;15680:7;15654:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;15622:8;:83::i;:::-;15723:4;15716:11;;15517:218;;;;:::o;17680:374::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17783:31:::1;17807:6;17783:19;17800:1;17783:12;;:16;;:19;;;;:::i;:::-;:23;;:31;;;;:::i;:::-;17771:8;:43;;17763:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;17911:28;17935:3;17911:19;17928:1;17911:12;;:16;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;17899:8;:40;;17891:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;18038:8;18012:23;:34;;;;17680:374:::0;:::o;17566:106::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17656:8:::1;17637:16;;:27;;;;;;;;;;;;;;;;;;17566:106:::0;:::o;18062:207::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18179:1:::1;18157:24;;:10;:24;;::::0;18149:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18250:10;18230:9;;:31;;;;;;;;;;;;;;;;;;18062:207:::0;:::o;12832:36::-;;;;:::o;13420:30::-;;;;;;;;;;;;;:::o;15239:119::-;15305:7;15332:9;:18;15342:7;15332:18;;;;;;;;;;;;;;;;15325:25;;15239:119;;;:::o;3295:230::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3402:42:::1;3365:81;;3386:6;::::0;::::1;;;;;;;;3365:81;;;;;;;;;;;;3474:42;3457:6;::::0;:60:::1;;;;;;;;;;;;;;;;;;3295:230::o:0;19771:122::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19837:12:::1;;19822;:27;;;;19873:12;;19860:10;:25;;;;19771:122::o:0;12381:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;13156:60::-;;;;:::o;13229:59::-;;;;:::o;12954:33::-;;;;:::o;12439:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;16534:130::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16648:8:::1;16623:13;:22;16637:7;16623:22;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;16534:130:::0;;:::o;13553:41::-;;;;;;;;;;;;;:::o;12746:36::-;;;;:::o;12557:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;3070:79::-;3108:7;3135:6;;;;;;;;;;;3128:13;;3070:79;:::o;14945:87::-;14984:13;15017:7;15010:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14945:87;:::o;11843:32::-;;;;;;;;;;;;;:::o;15743:269::-;15836:4;15853:129;15862:12;:10;:12::i;:::-;15876:7;15885:96;15924:15;15885:96;;;;;;;;;;;;;;;;;:11;:25;15897:12;:10;:12::i;:::-;15885:25;;;;;;;;;;;;;;;:34;15911:7;15885:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;15853:8;:129::i;:::-;16000:4;15993:11;;15743:269;;;;:::o;18801:125::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18910:8:::1;18882:25;;:36;;;;;;;;;;;;;;;;;;18801:125:::0;:::o;19946:167::-;20024:4;20041:42;20051:12;:10;:12::i;:::-;20065:9;20076:6;20041:9;:42::i;:::-;;20101:4;20094:11;;19946:167;;;;:::o;18632:161::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18723:8:::1;18709:11;;:22;;;;;;;;;;;;;;;;;;18747:38;18776:8;18747:38;;;;;;:::i;:::-;;;;;;;;18632:161:::0;:::o;12656:35::-;;;;:::o;13351:26::-;;;;;;;;;;;;;:::o;12789:36::-;;;;:::o;12498:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;18277:134::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18392:10:::1;18364:17;;:39;;;;;;;;;;;;;;;;;;18277:134:::0;:::o;13068:70::-;;;;:::o;13457:45::-;;;;;;;;;;;;;:::o;12614:35::-;;;;:::o;15366:143::-;15447:7;15474:11;:18;15486:5;15474:18;;;;;;;;;;;;;;;:27;15493:7;15474:27;;;;;;;;;;;;;;;;15467:34;;15366:143;;;;:::o;18419:205::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18530:1:::1;18508:24;;:10;:24;;::::0;18500:70:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;18605:10;18581:13;;:35;;;;;;;;;;;;;;;;;;18419:205:::0;:::o;17098:235::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17198:29:::1;17222:4;17198:19;17215:1;17198:12;;:16;;:19;;;;:::i;:::-;:23;;:29;;;;:::i;:::-;17183:11;:44;;17175:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;17314:11;17299:12;:26;;;;17098:235:::0;:::o;17451:107::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17543:7:::1;17518:22;;:32;;;;;;;;;;;;;;;;;;17451:107:::0;:::o;16672:136::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16792:8:::1;16762:18;:27;16781:7;16762:27;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;16672:136:::0;;:::o;12915:32::-;;;;:::o;17341:102::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17427:8:::1;17413:10;:22;;;;17341:102:::0;:::o;3533:244::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3642:1:::1;3622:22;;:8;:22;;::::0;3614:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3732:8;3703:38;;3724:6;::::0;::::1;;;;;;;;3703:38;;;;;;;;;;;;3761:8;3752:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3533:244:::0;:::o;12877:29::-;;;;:::o;24603:739::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24659:35:::1;24716:42;24659:100;;24813:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24795:70;;;24874:4;24881:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24795:110;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24781:11;;:124;;;;;;;;;;;;;;;;;;24934:16;24916:15;;:34;;;;;;;;;;;;;;;;;;25035:1;25026:11;24971;:26;24991:4;24971:26;;;;;;;;;;;;;;;:52;25006:15;;;;;;;;;;;24971:52;;;;;;;;;;;;;;;:66;;;;25088:4;25050:13;:35;25072:11;;;;;;;;;;;25050:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;25147:4;25103:19;:41;25131:11;;;;;;;;;;;25103:41;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;25190:10;25162:17;;:39;;;;;;;;;;;;;;;;;;25214:15;;;;;;;;;;;:31;;;25253:9;25272:4;25278:24;25296:4;25278:9;:24::i;:::-;25303:1;25305::::0;25307:10:::1;25318:15;25214:120;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;24648:694;24603:739::o:0;16816:127::-;3214:12;:10;:12::i;:::-;3204:22;;:6;;;;;;;;;;:22;;;3196:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16929:6:::1;16903:15;:23;16919:6;16903:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;16816:127:::0;;:::o;13511:35::-;;;;;;;;;;;;;:::o;280:115::-;333:15;376:10;361:26;;280:115;:::o;1222:181::-;1280:7;1300:9;1316:1;1312;:5;;;;:::i;:::-;1300:17;;1341:1;1336;:6;;1328:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1394:1;1387:8;;;1222:181;;;;:::o;16189:337::-;16299:1;16282:19;;:5;:19;;;16274:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16380:1;16361:21;;:7;:21;;;16353:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16464:6;16434:11;:18;16446:5;16434:18;;;;;;;;;;;;;;;:27;16453:7;16434:27;;;;;;;;;;;;;;;:36;;;;16502:7;16486:32;;16495:5;16486:32;;;16511:6;16486:32;;;;;;:::i;:::-;;;;;;;;16189:337;;;:::o;20527:1903::-;20614:4;20657:1;20639:20;;:6;:20;;;20631:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;20741:1;20720:23;;:9;:23;;;20712:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20799:18;:26;20818:6;20799:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;20829:18;:29;20848:9;20829:29;;;;;;;;;;;;;;;;;;;;;;;;;20799:59;20796:1627;;;20883:88;20898:6;20906:9;20917:6;20925:33;20940:6;20948:9;20925:14;:33::i;:::-;:45;;20964:6;20925:45;;;20960:1;20925:45;20883:14;:88::i;:::-;20876:95;;;;20796:1627;21013:11;;;;;;;;;;;21005:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;21078:15;:23;21094:6;21078:23;;;;;;;;;;;;;;;;;;;;;;;;;21077:24;:55;;;;;21106:15;:26;21122:9;21106:26;;;;;;;;;;;;;;;;;;;;;;;;;21105:27;21077:55;:81;;;;;21136:22;;;;;;;;;;;21077:81;21074:196;;;21197:12;;21187:6;:22;;21179:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;21074:196;21286:28;21317:24;21335:4;21317:9;:24::i;:::-;21286:55;;21356:28;21411:23;;21387:20;:47;;21356:78;;21467:23;:44;;;;;21495:16;;;;;;;;;;;21494:17;21467:44;:70;;;;;21516:13;:21;21530:6;21516:21;;;;;;;;;;;;;;;;;;;;;;;;;21515:22;21467:70;:85;;;;;21541:11;;;;;;;;;;;21467:85;21463:296;;;21590:25;;;;;;;;;;;21587:97;;;21661:23;;21638:46;;21587:97;21703:36;21718:20;21703:14;:36::i;:::-;21463:296;21795:53;21817:6;21795:53;;;;;;;;;;;;;;;;;:9;:17;21805:6;21795:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;21775:9;:17;21785:6;21775:17;;;;;;;;;;;;;;;:73;;;;21865:19;21888:18;:26;21907:6;21888:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;21918:18;:29;21937:9;21918:29;;;;;;;;;;;;;;;;;;;;;;;;;21888:59;21887:150;;22003:34;22011:6;22019:9;22030:6;22003:7;:34::i;:::-;21887:150;;;21994:6;21887:150;21865:172;;22057:16;;;;;;;;;;;:51;;;;;22078:19;:30;22098:9;22078:30;;;;;;;;;;;;;;;;;;;;;;;;;22077:31;22057:51;22054:191;;;22178:10;;22137:37;22162:11;22137:20;22147:9;22137;:20::i;:::-;:24;;:37;;;;:::i;:::-;:51;;22129:100;;;;;;;;;;;;:::i;:::-;;;;;;;;;22054:191;22284:37;22309:11;22284:9;:20;22294:9;22284:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;22261:9;:20;22271:9;22261:20;;;;;;;;;;;;;;;:60;;;;22360:9;22343:40;;22352:6;22343:40;;;22371:11;22343:40;;;;;;:::i;:::-;;;;;;;;22407:4;22400:11;;;;;20527:1903;;;;;;:::o;1555:192::-;1641:7;1674:1;1669;:6;;1677:12;1661:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1701:9;1717:1;1713;:5;;;;:::i;:::-;1701:17;;1738:1;1731:8;;;1555:192;;;;;:::o;1411:136::-;1469:7;1496:43;1500:1;1503;1496:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1489:50;;1411:136;;;;:::o;1755:250::-;1813:7;1842:1;1837;:6;1833:47;;1867:1;1860:8;;;;1833:47;1892:9;1908:1;1904;:5;;;;:::i;:::-;1892:17;;1937:1;1932;1928;:5;;;;:::i;:::-;:10;1920:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1996:1;1989:8;;;1755:250;;;;;:::o;2013:132::-;2071:7;2098:39;2102:1;2105;2098:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2091:46;;2013:132;;;;:::o;23642:269::-;23724:4;23761:11;;;;;;;;;;;23748:24;;:9;:24;;;:69;;;;;23804:13;;;;;;;;;;;23794:23;;:6;:23;;;23748:69;:111;;;;;23857:1;23839:20;;:6;:20;;;;23748:111;:155;;;;;23901:1;23881:22;;:9;:22;;;;23748:155;23741:162;;23642:269;;;;:::o;23173:348::-;23283:4;23320:54;23342:7;23320:54;;;;;;;;;;;;;;;;;:9;:17;23330:6;23320:17;;;;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;23300:9;:17;23310:6;23300:17;;;;;;;;;;;;;;;:74;;;;23408:32;23433:6;23408:9;:20;23418:9;23408:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;23385:9;:20;23395:9;23385:20;;;;;;;;;;;;;;;:55;;;;23473:9;23456:35;;23465:6;23456:35;;;23484:6;23456:35;;;;;;:::i;:::-;;;;;;;;23509:4;23502:11;;23173:348;;;;;;:::o;23529:105::-;13847:4;13828:16;;:23;;;;;;;;;;;;;;;;;;23601:25:::1;23618:7;23601:16;:25::i;:::-;13893:5:::0;13874:16;;:24;;;;;;;;;;;;;;;;;;23529:105;:::o;22444:721::-;22530:7;22550:18;22571:4;:14;;;22586:13;;;;;;;;;;;22571:29;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22550:50;;22611:17;22634:16;22678:13;:21;22692:6;22678:21;;;;;;;;;;;;;;;;;;;;;;;;;22675:249;;;22728:38;22762:3;22728:29;22739:17;;22728:6;:10;;:29;;;;:::i;:::-;:33;;:38;;;;:::i;:::-;22716:50;;22675:249;;;22787:13;:24;22801:9;22787:24;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;;22843:1;22815:24;22828:10;22815:8;:12;;:24;;;;:::i;:::-;:29;;22787:57;22784:140;;;22873:39;22908:3;22873:30;22884:18;;22873:6;:10;;:30;;;;:::i;:::-;:34;;:39;;;;:::i;:::-;22861:51;;22784:140;22675:249;22959:1;22947:9;:13;22944:173;;;23004:39;23033:9;23004;:24;23022:4;23004:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;22977:9;:24;22995:4;22977:24;;;;;;;;;;;;;;;:66;;;;23088:4;23063:42;;23072:6;23063:42;;;23095:9;23063:42;;;;;;:::i;:::-;;;;;;;;22944:173;23136:21;23147:9;23136:6;:10;;:21;;;;:::i;:::-;23129:28;;;;;22444:721;;;;;:::o;2153:278::-;2239:7;2271:1;2267;:5;2274:12;2259:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2298:9;2314:1;2310;:5;;;;:::i;:::-;2298:17;;2422:1;2415:8;;;2153:278;;;;;:::o;23929:666::-;24055:21;24093:1;24079:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24055:40;;24124:4;24106;24111:1;24106:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;24150:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24140:4;24145:1;24140:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;24185:62;24202:4;24217:15;;;;;;;;;;;24235:11;24185:8;:62::i;:::-;24286:15;;;;;;;;;;;:66;;;24367:11;24393:1;24437:4;24456:13;;;;;;;;;;;24500:15;24286:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24552:35;24569:11;24582:4;24552:35;;;;;;;:::i;:::-;;;;;;;;23984:611;23929:666;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:77;1713:7;1742:5;1731:16;;1676:77;;;:::o;1759:122::-;1832:24;1850:5;1832:24;:::i;:::-;1825:5;1822:35;1812:63;;1871:1;1868;1861:12;1812:63;1759:122;:::o;1887:139::-;1933:5;1971:6;1958:20;1949:29;;1987:33;2014:5;1987:33;:::i;:::-;1887:139;;;;:::o;2032:619::-;2109:6;2117;2125;2174:2;2162:9;2153:7;2149:23;2145:32;2142:119;;;2180:79;;:::i;:::-;2142:119;2300:1;2325:53;2370:7;2361:6;2350:9;2346:22;2325:53;:::i;:::-;2315:63;;2271:117;2427:2;2453:53;2498:7;2489:6;2478:9;2474:22;2453:53;:::i;:::-;2443:63;;2398:118;2555:2;2581:53;2626:7;2617:6;2606:9;2602:22;2581:53;:::i;:::-;2571:63;;2526:118;2032:619;;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:118::-;2978:24;2996:5;2978:24;:::i;:::-;2973:3;2966:37;2891:118;;:::o;3015:222::-;3108:4;3146:2;3135:9;3131:18;3123:26;;3159:71;3227:1;3216:9;3212:17;3203:6;3159:71;:::i;:::-;3015:222;;;;:::o;3243:122::-;3316:24;3334:5;3316:24;:::i;:::-;3309:5;3306:35;3296:63;;3355:1;3352;3345:12;3296:63;3243:122;:::o;3371:139::-;3417:5;3455:6;3442:20;3433:29;;3471:33;3498:5;3471:33;:::i;:::-;3371:139;;;;:::o;3516:474::-;3584:6;3592;3641:2;3629:9;3620:7;3616:23;3612:32;3609:119;;;3647:79;;:::i;:::-;3609:119;3767:1;3792:53;3837:7;3828:6;3817:9;3813:22;3792:53;:::i;:::-;3782:63;;3738:117;3894:2;3920:53;3965:7;3956:6;3945:9;3941:22;3920:53;:::i;:::-;3910:63;;3865:118;3516:474;;;;;:::o;3996:90::-;4030:7;4073:5;4066:13;4059:21;4048:32;;3996:90;;;:::o;4092:109::-;4173:21;4188:5;4173:21;:::i;:::-;4168:3;4161:34;4092:109;;:::o;4207:210::-;4294:4;4332:2;4321:9;4317:18;4309:26;;4345:65;4407:1;4396:9;4392:17;4383:6;4345:65;:::i;:::-;4207:210;;;;:::o;4423:104::-;4468:7;4497:24;4515:5;4497:24;:::i;:::-;4486:35;;4423:104;;;:::o;4533:142::-;4636:32;4662:5;4636:32;:::i;:::-;4631:3;4624:45;4533:142;;:::o;4681:254::-;4790:4;4828:2;4817:9;4813:18;4805:26;;4841:87;4925:1;4914:9;4910:17;4901:6;4841:87;:::i;:::-;4681:254;;;;:::o;4941:60::-;4969:3;4990:5;4983:12;;4941:60;;;:::o;5007:142::-;5057:9;5090:53;5108:34;5117:24;5135:5;5117:24;:::i;:::-;5108:34;:::i;:::-;5090:53;:::i;:::-;5077:66;;5007:142;;;:::o;5155:126::-;5205:9;5238:37;5269:5;5238:37;:::i;:::-;5225:50;;5155:126;;;:::o;5287:153::-;5364:9;5397:37;5428:5;5397:37;:::i;:::-;5384:50;;5287:153;;;:::o;5446:185::-;5560:64;5618:5;5560:64;:::i;:::-;5555:3;5548:77;5446:185;;:::o;5637:276::-;5757:4;5795:2;5784:9;5780:18;5772:26;;5808:98;5903:1;5892:9;5888:17;5879:6;5808:98;:::i;:::-;5637:276;;;;:::o;5919:118::-;6006:24;6024:5;6006:24;:::i;:::-;6001:3;5994:37;5919:118;;:::o;6043:222::-;6136:4;6174:2;6163:9;6159:18;6151:26;;6187:71;6255:1;6244:9;6240:17;6231:6;6187:71;:::i;:::-;6043:222;;;;:::o;6271:116::-;6341:21;6356:5;6341:21;:::i;:::-;6334:5;6331:32;6321:60;;6377:1;6374;6367:12;6321:60;6271:116;:::o;6393:133::-;6436:5;6474:6;6461:20;6452:29;;6490:30;6514:5;6490:30;:::i;:::-;6393:133;;;;:::o;6532:468::-;6597:6;6605;6654:2;6642:9;6633:7;6629:23;6625:32;6622:119;;;6660:79;;:::i;:::-;6622:119;6780:1;6805:53;6850:7;6841:6;6830:9;6826:22;6805:53;:::i;:::-;6795:63;;6751:117;6907:2;6933:50;6975:7;6966:6;6955:9;6951:22;6933:50;:::i;:::-;6923:60;;6878:115;6532:468;;;;;:::o;7006:619::-;7083:6;7091;7099;7148:2;7136:9;7127:7;7123:23;7119:32;7116:119;;;7154:79;;:::i;:::-;7116:119;7274:1;7299:53;7344:7;7335:6;7324:9;7320:22;7299:53;:::i;:::-;7289:63;;7245:117;7401:2;7427:53;7472:7;7463:6;7452:9;7448:22;7427:53;:::i;:::-;7417:63;;7372:118;7529:2;7555:53;7600:7;7591:6;7580:9;7576:22;7555:53;:::i;:::-;7545:63;;7500:118;7006:619;;;;;:::o;7631:86::-;7666:7;7706:4;7699:5;7695:16;7684:27;;7631:86;;;:::o;7723:112::-;7806:22;7822:5;7806:22;:::i;:::-;7801:3;7794:35;7723:112;;:::o;7841:214::-;7930:4;7968:2;7957:9;7953:18;7945:26;;7981:67;8045:1;8034:9;8030:17;8021:6;7981:67;:::i;:::-;7841:214;;;;:::o;8061:329::-;8120:6;8169:2;8157:9;8148:7;8144:23;8140:32;8137:119;;;8175:79;;:::i;:::-;8137:119;8295:1;8320:53;8365:7;8356:6;8345:9;8341:22;8320:53;:::i;:::-;8310:63;;8266:117;8061:329;;;;:::o;8396:323::-;8452:6;8501:2;8489:9;8480:7;8476:23;8472:32;8469:119;;;8507:79;;:::i;:::-;8469:119;8627:1;8652:50;8694:7;8685:6;8674:9;8670:22;8652:50;:::i;:::-;8642:60;;8598:114;8396:323;;;;:::o;8725:329::-;8784:6;8833:2;8821:9;8812:7;8808:23;8804:32;8801:119;;;8839:79;;:::i;:::-;8801:119;8959:1;8984:53;9029:7;9020:6;9009:9;9005:22;8984:53;:::i;:::-;8974:63;;8930:117;8725:329;;;;:::o;9060:474::-;9128:6;9136;9185:2;9173:9;9164:7;9160:23;9156:32;9153:119;;;9191:79;;:::i;:::-;9153:119;9311:1;9336:53;9381:7;9372:6;9361:9;9357:22;9336:53;:::i;:::-;9326:63;;9282:117;9438:2;9464:53;9509:7;9500:6;9489:9;9485:22;9464:53;:::i;:::-;9454:63;;9409:118;9060:474;;;;;:::o;9540:180::-;9588:77;9585:1;9578:88;9685:4;9682:1;9675:15;9709:4;9706:1;9699:15;9726:320;9770:6;9807:1;9801:4;9797:12;9787:22;;9854:1;9848:4;9844:12;9875:18;9865:81;;9931:4;9923:6;9919:17;9909:27;;9865:81;9993:2;9985:6;9982:14;9962:18;9959:38;9956:84;;10012:18;;:::i;:::-;9956:84;9777:269;9726:320;;;:::o;10052:182::-;10192:34;10188:1;10180:6;10176:14;10169:58;10052:182;:::o;10240:366::-;10382:3;10403:67;10467:2;10462:3;10403:67;:::i;:::-;10396:74;;10479:93;10568:3;10479:93;:::i;:::-;10597:2;10592:3;10588:12;10581:19;;10240:366;;;:::o;10612:419::-;10778:4;10816:2;10805:9;10801:18;10793:26;;10865:9;10859:4;10855:20;10851:1;10840:9;10836:17;10829:47;10893:131;11019:4;10893:131;:::i;:::-;10885:139;;10612:419;;;:::o;11037:180::-;11085:77;11082:1;11075:88;11182:4;11179:1;11172:15;11206:4;11203:1;11196:15;11223:180;11271:77;11268:1;11261:88;11368:4;11365:1;11358:15;11392:4;11389:1;11382:15;11409:185;11449:1;11466:20;11484:1;11466:20;:::i;:::-;11461:25;;11500:20;11518:1;11500:20;:::i;:::-;11495:25;;11539:1;11529:35;;11544:18;;:::i;:::-;11529:35;11586:1;11583;11579:9;11574:14;;11409:185;;;;:::o;11600:178::-;11740:30;11736:1;11728:6;11724:14;11717:54;11600:178;:::o;11784:366::-;11926:3;11947:67;12011:2;12006:3;11947:67;:::i;:::-;11940:74;;12023:93;12112:3;12023:93;:::i;:::-;12141:2;12136:3;12132:12;12125:19;;11784:366;;;:::o;12156:419::-;12322:4;12360:2;12349:9;12345:18;12337:26;;12409:9;12403:4;12399:20;12395:1;12384:9;12380:17;12373:47;12437:131;12563:4;12437:131;:::i;:::-;12429:139;;12156:419;;;:::o;12581:177::-;12721:29;12717:1;12709:6;12705:14;12698:53;12581:177;:::o;12764:366::-;12906:3;12927:67;12991:2;12986:3;12927:67;:::i;:::-;12920:74;;13003:93;13092:3;13003:93;:::i;:::-;13121:2;13116:3;13112:12;13105:19;;12764:366;;;:::o;13136:419::-;13302:4;13340:2;13329:9;13325:18;13317:26;;13389:9;13383:4;13379:20;13375:1;13364:9;13360:17;13353:47;13417:131;13543:4;13417:131;:::i;:::-;13409:139;;13136:419;;;:::o;13561:247::-;13701:34;13697:1;13689:6;13685:14;13678:58;13770:30;13765:2;13757:6;13753:15;13746:55;13561:247;:::o;13814:366::-;13956:3;13977:67;14041:2;14036:3;13977:67;:::i;:::-;13970:74;;14053:93;14142:3;14053:93;:::i;:::-;14171:2;14166:3;14162:12;14155:19;;13814:366;;;:::o;14186:419::-;14352:4;14390:2;14379:9;14375:18;14367:26;;14439:9;14433:4;14429:20;14425:1;14414:9;14410:17;14403:47;14467:131;14593:4;14467:131;:::i;:::-;14459:139;;14186:419;;;:::o;14611:244::-;14751:34;14747:1;14739:6;14735:14;14728:58;14820:27;14815:2;14807:6;14803:15;14796:52;14611:244;:::o;14861:366::-;15003:3;15024:67;15088:2;15083:3;15024:67;:::i;:::-;15017:74;;15100:93;15189:3;15100:93;:::i;:::-;15218:2;15213:3;15209:12;15202:19;;14861:366;;;:::o;15233:419::-;15399:4;15437:2;15426:9;15422:18;15414:26;;15486:9;15480:4;15476:20;15472:1;15461:9;15457:17;15450:47;15514:131;15640:4;15514:131;:::i;:::-;15506:139;;15233:419;;;:::o;15658:221::-;15798:34;15794:1;15786:6;15782:14;15775:58;15867:4;15862:2;15854:6;15850:15;15843:29;15658:221;:::o;15885:366::-;16027:3;16048:67;16112:2;16107:3;16048:67;:::i;:::-;16041:74;;16124:93;16213:3;16124:93;:::i;:::-;16242:2;16237:3;16233:12;16226:19;;15885:366;;;:::o;16257:419::-;16423:4;16461:2;16450:9;16446:18;16438:26;;16510:9;16504:4;16500:20;16496:1;16485:9;16481:17;16474:47;16538:131;16664:4;16538:131;:::i;:::-;16530:139;;16257:419;;;:::o;16682:243::-;16822:34;16818:1;16810:6;16806:14;16799:58;16891:26;16886:2;16878:6;16874:15;16867:51;16682:243;:::o;16931:366::-;17073:3;17094:67;17158:2;17153:3;17094:67;:::i;:::-;17087:74;;17170:93;17259:3;17170:93;:::i;:::-;17288:2;17283:3;17279:12;17272:19;;16931:366;;;:::o;17303:419::-;17469:4;17507:2;17496:9;17492:18;17484:26;;17556:9;17550:4;17546:20;17542:1;17531:9;17527:17;17520:47;17584:131;17710:4;17584:131;:::i;:::-;17576:139;;17303:419;;;:::o;17728:225::-;17868:34;17864:1;17856:6;17852:14;17845:58;17937:8;17932:2;17924:6;17920:15;17913:33;17728:225;:::o;17959:366::-;18101:3;18122:67;18186:2;18181:3;18122:67;:::i;:::-;18115:74;;18198:93;18287:3;18198:93;:::i;:::-;18316:2;18311:3;18307:12;18300:19;;17959:366;;;:::o;18331:419::-;18497:4;18535:2;18524:9;18520:18;18512:26;;18584:9;18578:4;18574:20;18570:1;18559:9;18555:17;18548:47;18612:131;18738:4;18612:131;:::i;:::-;18604:139;;18331:419;;;:::o;18756:143::-;18813:5;18844:6;18838:13;18829:22;;18860:33;18887:5;18860:33;:::i;:::-;18756:143;;;;:::o;18905:351::-;18975:6;19024:2;19012:9;19003:7;18999:23;18995:32;18992:119;;;19030:79;;:::i;:::-;18992:119;19150:1;19175:64;19231:7;19222:6;19211:9;19207:22;19175:64;:::i;:::-;19165:74;;19121:128;18905:351;;;;:::o;19262:332::-;19383:4;19421:2;19410:9;19406:18;19398:26;;19434:71;19502:1;19491:9;19487:17;19478:6;19434:71;:::i;:::-;19515:72;19583:2;19572:9;19568:18;19559:6;19515:72;:::i;:::-;19262:332;;;;;:::o;19600:85::-;19645:7;19674:5;19663:16;;19600:85;;;:::o;19691:158::-;19749:9;19782:61;19800:42;19809:32;19835:5;19809:32;:::i;:::-;19800:42;:::i;:::-;19782:61;:::i;:::-;19769:74;;19691:158;;;:::o;19855:147::-;19950:45;19989:5;19950:45;:::i;:::-;19945:3;19938:58;19855:147;;:::o;20008:807::-;20257:4;20295:3;20284:9;20280:19;20272:27;;20309:71;20377:1;20366:9;20362:17;20353:6;20309:71;:::i;:::-;20390:72;20458:2;20447:9;20443:18;20434:6;20390:72;:::i;:::-;20472:80;20548:2;20537:9;20533:18;20524:6;20472:80;:::i;:::-;20562;20638:2;20627:9;20623:18;20614:6;20562:80;:::i;:::-;20652:73;20720:3;20709:9;20705:19;20696:6;20652:73;:::i;:::-;20735;20803:3;20792:9;20788:19;20779:6;20735:73;:::i;:::-;20008:807;;;;;;;;;:::o;20821:143::-;20878:5;20909:6;20903:13;20894:22;;20925:33;20952:5;20925:33;:::i;:::-;20821:143;;;;:::o;20970:663::-;21058:6;21066;21074;21123:2;21111:9;21102:7;21098:23;21094:32;21091:119;;;21129:79;;:::i;:::-;21091:119;21249:1;21274:64;21330:7;21321:6;21310:9;21306:22;21274:64;:::i;:::-;21264:74;;21220:128;21387:2;21413:64;21469:7;21460:6;21449:9;21445:22;21413:64;:::i;:::-;21403:74;;21358:129;21526:2;21552:64;21608:7;21599:6;21588:9;21584:22;21552:64;:::i;:::-;21542:74;;21497:129;20970:663;;;;;:::o;21639:191::-;21679:3;21698:20;21716:1;21698:20;:::i;:::-;21693:25;;21732:20;21750:1;21732:20;:::i;:::-;21727:25;;21775:1;21772;21768:9;21761:16;;21796:3;21793:1;21790:10;21787:36;;;21803:18;;:::i;:::-;21787:36;21639:191;;;;:::o;21836:177::-;21976:29;21972:1;21964:6;21960:14;21953:53;21836:177;:::o;22019:366::-;22161:3;22182:67;22246:2;22241:3;22182:67;:::i;:::-;22175:74;;22258:93;22347:3;22258:93;:::i;:::-;22376:2;22371:3;22367:12;22360:19;;22019:366;;;:::o;22391:419::-;22557:4;22595:2;22584:9;22580:18;22572:26;;22644:9;22638:4;22634:20;22630:1;22619:9;22615:17;22608:47;22672:131;22798:4;22672:131;:::i;:::-;22664:139;;22391:419;;;:::o;22816:223::-;22956:34;22952:1;22944:6;22940:14;22933:58;23025:6;23020:2;23012:6;23008:15;23001:31;22816:223;:::o;23045:366::-;23187:3;23208:67;23272:2;23267:3;23208:67;:::i;:::-;23201:74;;23284:93;23373:3;23284:93;:::i;:::-;23402:2;23397:3;23393:12;23386:19;;23045:366;;;:::o;23417:419::-;23583:4;23621:2;23610:9;23606:18;23598:26;;23670:9;23664:4;23660:20;23656:1;23645:9;23641:17;23634:47;23698:131;23824:4;23698:131;:::i;:::-;23690:139;;23417:419;;;:::o;23842:221::-;23982:34;23978:1;23970:6;23966:14;23959:58;24051:4;24046:2;24038:6;24034:15;24027:29;23842:221;:::o;24069:366::-;24211:3;24232:67;24296:2;24291:3;24232:67;:::i;:::-;24225:74;;24308:93;24397:3;24308:93;:::i;:::-;24426:2;24421:3;24417:12;24410:19;;24069:366;;;:::o;24441:419::-;24607:4;24645:2;24634:9;24630:18;24622:26;;24694:9;24688:4;24684:20;24680:1;24669:9;24665:17;24658:47;24722:131;24848:4;24722:131;:::i;:::-;24714:139;;24441:419;;;:::o;24866:224::-;25006:34;25002:1;24994:6;24990:14;24983:58;25075:7;25070:2;25062:6;25058:15;25051:32;24866:224;:::o;25096:366::-;25238:3;25259:67;25323:2;25318:3;25259:67;:::i;:::-;25252:74;;25335:93;25424:3;25335:93;:::i;:::-;25453:2;25448:3;25444:12;25437:19;;25096:366;;;:::o;25468:419::-;25634:4;25672:2;25661:9;25657:18;25649:26;;25721:9;25715:4;25711:20;25707:1;25696:9;25692:17;25685:47;25749:131;25875:4;25749:131;:::i;:::-;25741:139;;25468:419;;;:::o;25893:222::-;26033:34;26029:1;26021:6;26017:14;26010:58;26102:5;26097:2;26089:6;26085:15;26078:30;25893:222;:::o;26121:366::-;26263:3;26284:67;26348:2;26343:3;26284:67;:::i;:::-;26277:74;;26360:93;26449:3;26360:93;:::i;:::-;26478:2;26473:3;26469:12;26462:19;;26121:366;;;:::o;26493:419::-;26659:4;26697:2;26686:9;26682:18;26674:26;;26746:9;26740:4;26736:20;26732:1;26721:9;26717:17;26710:47;26774:131;26900:4;26774:131;:::i;:::-;26766:139;;26493:419;;;:::o;26918:178::-;27058:30;27054:1;27046:6;27042:14;27035:54;26918:178;:::o;27102:366::-;27244:3;27265:67;27329:2;27324:3;27265:67;:::i;:::-;27258:74;;27341:93;27430:3;27341:93;:::i;:::-;27459:2;27454:3;27450:12;27443:19;;27102:366;;;:::o;27474:419::-;27640:4;27678:2;27667:9;27663:18;27655:26;;27727:9;27721:4;27717:20;27713:1;27702:9;27698:17;27691:47;27755:131;27881:4;27755:131;:::i;:::-;27747:139;;27474:419;;;:::o;27899:227::-;28039:34;28035:1;28027:6;28023:14;28016:58;28108:10;28103:2;28095:6;28091:15;28084:35;27899:227;:::o;28132:366::-;28274:3;28295:67;28359:2;28354:3;28295:67;:::i;:::-;28288:74;;28371:93;28460:3;28371:93;:::i;:::-;28489:2;28484:3;28480:12;28473:19;;28132:366;;;:::o;28504:419::-;28670:4;28708:2;28697:9;28693:18;28685:26;;28757:9;28751:4;28747:20;28743:1;28732:9;28728:17;28721:47;28785:131;28911:4;28785:131;:::i;:::-;28777:139;;28504:419;;;:::o;28929:224::-;29069:34;29065:1;29057:6;29053:14;29046:58;29138:7;29133:2;29125:6;29121:15;29114:32;28929:224;:::o;29159:366::-;29301:3;29322:67;29386:2;29381:3;29322:67;:::i;:::-;29315:74;;29398:93;29487:3;29398:93;:::i;:::-;29516:2;29511:3;29507:12;29500:19;;29159:366;;;:::o;29531:419::-;29697:4;29735:2;29724:9;29720:18;29712:26;;29784:9;29778:4;29774:20;29770:1;29759:9;29755:17;29748:47;29812:131;29938:4;29812:131;:::i;:::-;29804:139;;29531:419;;;:::o;29956:194::-;29996:4;30016:20;30034:1;30016:20;:::i;:::-;30011:25;;30050:20;30068:1;30050:20;:::i;:::-;30045:25;;30094:1;30091;30087:9;30079:17;;30118:1;30112:4;30109:11;30106:37;;;30123:18;;:::i;:::-;30106:37;29956:194;;;;:::o;30156:410::-;30196:7;30219:20;30237:1;30219:20;:::i;:::-;30214:25;;30253:20;30271:1;30253:20;:::i;:::-;30248:25;;30308:1;30305;30301:9;30330:30;30348:11;30330:30;:::i;:::-;30319:41;;30509:1;30500:7;30496:15;30493:1;30490:22;30470:1;30463:9;30443:83;30420:139;;30539:18;;:::i;:::-;30420:139;30204:362;30156:410;;;;:::o;30572:220::-;30712:34;30708:1;30700:6;30696:14;30689:58;30781:3;30776:2;30768:6;30764:15;30757:28;30572:220;:::o;30798:366::-;30940:3;30961:67;31025:2;31020:3;30961:67;:::i;:::-;30954:74;;31037:93;31126:3;31037:93;:::i;:::-;31155:2;31150:3;31146:12;31139:19;;30798:366;;;:::o;31170:419::-;31336:4;31374:2;31363:9;31359:18;31351:26;;31423:9;31417:4;31413:20;31409:1;31398:9;31394:17;31387:47;31451:131;31577:4;31451:131;:::i;:::-;31443:139;;31170:419;;;:::o;31595:134::-;31653:9;31686:37;31717:5;31686:37;:::i;:::-;31673:50;;31595:134;;;:::o;31735:147::-;31830:45;31869:5;31830:45;:::i;:::-;31825:3;31818:58;31735:147;;:::o;31888:238::-;31989:4;32027:2;32016:9;32012:18;32004:26;;32040:79;32116:1;32105:9;32101:17;32092:6;32040:79;:::i;:::-;31888:238;;;;:::o;32132:351::-;32202:6;32251:2;32239:9;32230:7;32226:23;32222:32;32219:119;;;32257:79;;:::i;:::-;32219:119;32377:1;32402:64;32458:7;32449:6;32438:9;32434:22;32402:64;:::i;:::-;32392:74;;32348:128;32132:351;;;;:::o;32489:180::-;32537:77;32534:1;32527:88;32634:4;32631:1;32624:15;32658:4;32655:1;32648:15;32675:180;32723:77;32720:1;32713:88;32820:4;32817:1;32810:15;32844:4;32841:1;32834:15;32861:114;32928:6;32962:5;32956:12;32946:22;;32861:114;;;:::o;32981:184::-;33080:11;33114:6;33109:3;33102:19;33154:4;33149:3;33145:14;33130:29;;32981:184;;;;:::o;33171:132::-;33238:4;33261:3;33253:11;;33291:4;33286:3;33282:14;33274:22;;33171:132;;;:::o;33309:108::-;33386:24;33404:5;33386:24;:::i;:::-;33381:3;33374:37;33309:108;;:::o;33423:179::-;33492:10;33513:46;33555:3;33547:6;33513:46;:::i;:::-;33591:4;33586:3;33582:14;33568:28;;33423:179;;;;:::o;33608:113::-;33678:4;33710;33705:3;33701:14;33693:22;;33608:113;;;:::o;33757:732::-;33876:3;33905:54;33953:5;33905:54;:::i;:::-;33975:86;34054:6;34049:3;33975:86;:::i;:::-;33968:93;;34085:56;34135:5;34085:56;:::i;:::-;34164:7;34195:1;34180:284;34205:6;34202:1;34199:13;34180:284;;;34281:6;34275:13;34308:63;34367:3;34352:13;34308:63;:::i;:::-;34301:70;;34394:60;34447:6;34394:60;:::i;:::-;34384:70;;34240:224;34227:1;34224;34220:9;34215:14;;34180:284;;;34184:14;34480:3;34473:10;;33881:608;;;33757:732;;;;:::o;34495:847::-;34766:4;34804:3;34793:9;34789:19;34781:27;;34818:71;34886:1;34875:9;34871:17;34862:6;34818:71;:::i;:::-;34899:80;34975:2;34964:9;34960:18;34951:6;34899:80;:::i;:::-;35026:9;35020:4;35016:20;35011:2;35000:9;34996:18;34989:48;35054:108;35157:4;35148:6;35054:108;:::i;:::-;35046:116;;35172:80;35248:2;35237:9;35233:18;35224:6;35172:80;:::i;:::-;35262:73;35330:3;35319:9;35315:19;35306:6;35262:73;:::i;:::-;34495:847;;;;;;;;:::o;35348:483::-;35519:4;35557:2;35546:9;35542:18;35534:26;;35570:71;35638:1;35627:9;35623:17;35614:6;35570:71;:::i;:::-;35688:9;35682:4;35678:20;35673:2;35662:9;35658:18;35651:48;35716:108;35819:4;35810:6;35716:108;:::i;:::-;35708:116;;35348:483;;;;;:::o

Swarm Source

ipfs://f69e2193d80ee0faf9469cb55f6d4726d2c8c7c67c73dc322be841e8f1de4f1d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.