ETH Price: $2,427.29 (+3.33%)
Gas: 1.38 Gwei

Token

BRC-20 (BRC)
 

Overview

Max Total Supply

21,000,000 BRC

Holders

61

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
99,765.94239155997020199 BRC

Value
$0.00
0x8e845812e1326323f4ee8b4b7268a84dab70c66d
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
BRCsolutions

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/*

$BRC is revolutionizing accessibility and interoperability for the experimental BRC-20 token standard with a suite of tools

BRCsolutions.app

t.me/brcsolutions
     
                                ___╔=|░░░░░░░░░░░░░==___
                           _╔=░░░░░░░░░░░░░░░░░░░░░░░░░░░░=╔_
                        ╔|░░░░░░░░░░░░░░░╦╦╦╦╦╦╦░░░░░░░░░░░░░░░╔_
                    _÷H '░░░░░░░╦╦╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠▒╦░░░░░░░░░░=_
                  .░░`   `Ü╔╦╠╠╠╠▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠╠╠╠▒╦░░░░░░░░.
                 ``         `"²╙╠▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠╠╠╦░░░░░░░╔
              ╔░░░░=.     ╓╦D╠▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠▒░░░░░░░≈
            ,░░░░░░µ╠╠_  ╩▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠░░░░░░░_
           |░░░░░░╠▒▒▒╠ j▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░.
          |░░░░░╔╠▒▒▒▒▒H▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒Ü░░░░░=
         |░░░░░▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░
        |░░░░░[▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░
        ░░░░░[▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒Ü░░░░░_
       ░░░░░░▒▒▒╠╩╠╠╩▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░░░░░
       ░░░░░[▒▒▒H ╚H ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒Ü░░░░░
      |░░░░░╠▒_   ___  `╚▒╠╓   ╓╓_ `╚▒▒▒╩² ╓╓,  j▒▒▒▒▒▒▒╩  ╔╓  ²▒▒▒╙ _╓_ ²╠▒░░░░░░
      |░░░░░▒▒▒H  ╚▒▒H  [▒▒▒  j▒▒╠   ▒▒H  ╠▒▒▒H_j▒▒▒▒▒▒▒¼╓╓╠▒   ╠▒H  ╠╠▒  '▒░░░░░░
      |░░░░░▒▒▒H  ___   ╙╠▒▒   ^^`,╔╠▒▒   ▒▒▒▒▒▒▒▒╙╙╙╙╙▒▒▒▒▒╙  ╔▒▒   ▒╠▒   ▒░░░░░░
      |░░░░░▒▒▒H  ╚▒▒╠⌐  [▒▒  j╠_  ╚▒▒▒   ╠▒▒▒▒╠▒▒╔╔╔╔╔▒▒╠^ ╓@▒╩╚▒   ╠╠▒   ▒░░░░░░
      '░░░░░╠╠`   ```   _╠╠╩  !╩▒╓  ²╩▒╠_ `╙╚╜^_╩▒▒▒▒▒▒▒H  ²²`` [▒D_ ╘╠╩  j▒░░░░░`
       ░░░░░[╠R▒H ╔⌐ R╠╠▒▒╠╦╦╦╦╦▒▒R╦╦╦▒▒▒╠╦╦╦╦R▒▒▒▒▒▒▒▒▒K╦╦╦╦╦╦╦@▒▒▒K╦╦╦@╠▒Ü░░░░░
       |░░░░░╠▒▒╠╦╠K╦▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╩░░░░░`
        |░░░░░╠▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠░░░░░░
         ░░░░░░╠▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠░░░░░░
          ░░░░░░╚▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╩░░░░░░
           |░░░░░╙▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒Ü░░░░░Ü
            |░░░░░░╚▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╩░░░░░░∩
             `|░░░░░░╚▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╩Ü░░░░░Ü`
               'Ü░░░░░░╙╠▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╩Ü░░░░░░░`
                 `|░░░░░░░╙╚▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╩Ü░░░░░░░Ü`
                    ²░░░░░░░░░╙╚╠▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╠╚ÜÜ░░░░░░░░²
                      `²Ü░░░░░░░░░░░╙╙╙╚╩╩╩╩╩╩╩╩╚╙╙ÜÜ░░░░░░░░░░ܲ
                          `²Ü░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ܲ`
                               `'²=░░░░░░░░░░░░░░░░░░Ü='`
                                         ``````

*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.23;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
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 Mint(address indexed sender, uint amount0, uint amount1);
    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 mint(address to) external returns (uint liquidity);
    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 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 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);
}
 
interface IERC20Metadata is IERC20 {

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

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

    function decimals() external view returns (uint8);
}
 
 
contract ERC20 is Context, IERC20, IERC20Metadata {
    using SafeMath for uint256;
 
    mapping(address => uint256) private _balances;
 
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 private _totalSupply;
 
    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

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

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue));
        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
 
        _beforeTokenTransfer(sender, recipient, amount);
 
        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");
 
        _beforeTokenTransfer(address(0), account, amount);
 
        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");
 
        _beforeTokenTransfer(account, address(0), amount);
 
        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}
 
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(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 
 
 
library SafeMathInt {
    int256 private constant MIN_INT256 = int256(1) << 255;
    int256 private constant MAX_INT256 = ~(int256(1) << 255);

    function mul(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a * b;
 
        // Detect overflow when multiplying MIN_INT256 with -1
        require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
        require((b == 0) || (c / b == a));
        return c;
    }

    function div(int256 a, int256 b) internal pure returns (int256) {
        // Prevent overflow when dividing MIN_INT256 by -1
        require(b != -1 || a != MIN_INT256);
 
        // Solidity already throws when dividing by 0.
        return a / b;
    }

    function sub(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a - b;
        require((b >= 0 && c <= a) || (b < 0 && c > a));
        return c;
    }

    function add(int256 a, int256 b) internal pure returns (int256) {
        int256 c = a + b;
        require((b >= 0 && c >= a) || (b < 0 && c < a));
        return c;
    }

    function abs(int256 a) internal pure returns (int256) {
        require(a != MIN_INT256);
        return a < 0 ? -a : a;
    }
 
 
    function toUint256Safe(int256 a) internal pure returns (uint256) {
        require(a >= 0);
        return uint256(a);
    }
}
 
library SafeMathUint {
  function toInt256Safe(uint256 a) internal pure returns (int256) {
    int256 b = int256(a);
    require(b >= 0);
    return b;
  }
}
 
 
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 BRCsolutions is ERC20, Ownable {
    using SafeMath for uint256;
 
    IUniswapV2Router02 public immutable uniswapV2Router;
    address public immutable uniswapV2Pair;
 
    bool private swapping;
 
    address private marketingWallet;
    address private devWallet;
 
    uint256 public maxTransactionAmount;
    uint256 public swapTokensAtAmount;
    uint256 public maxWallet;
 
    bool public limitsInEffect = true;
    bool public tradingActive = false;
    bool public swapEnabled = false;
 
     // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch
 
    // Seller Map
    mapping (address => uint256) private _holderFirstBuyTimestamp;
 
    // Blacklist Map
    mapping (address => bool) private _blacklist;
    bool public transferDelayEnabled = true;
 
    uint256 public buyTotalFees;
    uint256 public buyMarketingFee;
    uint256 public buyLiquidityFee;
    uint256 public buyDevFee;
 
    uint256 public sellTotalFees;
    uint256 public sellMarketingFee;
    uint256 public sellLiquidityFee;
    uint256 public sellDevFee;
 
    uint256 public tokensForMarketing;
    uint256 public tokensForLiquidity;
    uint256 public tokensForDev;
 
    // block number of opened trading
    uint256 launchedAt;
 
    /******************/
 
    // exclude from fees and max transaction amount
    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public _isExcludedMaxTransactionAmount;
 
    // store addresses that a automatic market maker pairs. Any transfer *to* these addresses
    // could be subject to a maximum transfer amount
    mapping (address => bool) public automatedMarketMakerPairs;
 
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);
 
    event ExcludeFromFees(address indexed account, bool isExcluded);
 
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
 
    event marketingWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event devWalletUpdated(address indexed newWallet, address indexed oldWallet);
 
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiquidity
    );
 
    event AutoNukeLP();
 
    event ManualNukeLP();
 
    constructor() ERC20("BRC-20", "BRC") {
 
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
 
        excludeFromMaxTransaction(address(_uniswapV2Router), true);
        uniswapV2Router = _uniswapV2Router;
 
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        excludeFromMaxTransaction(address(uniswapV2Pair), true);
        _setAutomatedMarketMakerPair(address(uniswapV2Pair), true);
 
        uint256 _buyMarketingFee = 15;
        uint256 _buyLiquidityFee = 0;
        uint256 _buyDevFee = 0;
 
        uint256 _sellMarketingFee = 15;
        uint256 _sellLiquidityFee = 0;
        uint256 _sellDevFee = 0;
 
        uint256 totalSupply = 21000000 * 1e18;
 
        maxTransactionAmount = totalSupply * 10 / 1000; // 1%
        maxWallet = totalSupply * 10 / 1000; // 1% 
        swapTokensAtAmount = totalSupply * 5 / 10000; // 0.05%
 
        buyMarketingFee = _buyMarketingFee;
        buyLiquidityFee = _buyLiquidityFee;
        buyDevFee = _buyDevFee;
        buyTotalFees = buyMarketingFee + buyLiquidityFee + buyDevFee;
 
        sellMarketingFee = _sellMarketingFee;
        sellLiquidityFee = _sellLiquidityFee;
        sellDevFee = _sellDevFee;
        sellTotalFees = sellMarketingFee + sellLiquidityFee + sellDevFee;
 
        marketingWallet = address(0xBAc07F5447A75baCf61F07d7c73561Cbd823Fa3E);
        devWallet = address(0xBAc07F5447A75baCf61F07d7c73561Cbd823Fa3E);
 
        // exclude from paying fees or having max transaction amount
        excludeFromFees(owner(), true);
        excludeFromFees(address(this), true);
        excludeFromFees(address(0xdead), true);
        excludeFromFees(address(marketingWallet), true);
 
        excludeFromMaxTransaction(owner(), true);
        excludeFromMaxTransaction(address(this), true);
        excludeFromMaxTransaction(address(0xdead), true);
        excludeFromMaxTransaction(address(devWallet), true);
        excludeFromMaxTransaction(address(marketingWallet), true);
 
        /*
            _mint is an internal function in ERC20.sol that is only called here,
            and CANNOT be called ever again
        */
        _mint(msg.sender, totalSupply);
    }
 
    receive() external payable {
 
    }
 
    // once enabled, can never be turned off
    function enableTrading() external onlyOwner {
        tradingActive = true;
        swapEnabled = true;
        launchedAt = block.number;
    }
 
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        limitsInEffect = false;
        return true;
    }
 
    // disable Transfer delay - cannot be reenabled
    function disableTransferDelay() external onlyOwner returns (bool){
        transferDelayEnabled = false;
        return true;
    }
 
     // change the minimum amount of tokens to sell from fees
    function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool){
        require(newAmount >= totalSupply() * 1 / 100000, "Swap amount cannot be lower than 0.001% total supply.");
        require(newAmount <= totalSupply() * 5 / 1000, "Swap amount cannot be higher than 0.5% total supply.");
        swapTokensAtAmount = newAmount;
        return true;
    }
 
    function updateMaxTxnAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 1 / 1000)/1e18, "Cannot set maxTransactionAmount lower than 0.1%");
        maxTransactionAmount = newNum * (10**18);
    }
 
    function updateMaxWalletAmount(uint256 newNum) external onlyOwner {
        require(newNum >= (totalSupply() * 5 / 1000)/1e18, "Cannot set maxWallet lower than 0.5%");
        maxWallet = newNum * (10**18);
    }
 
    function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner {
        _isExcludedMaxTransactionAmount[updAds] = isEx;
    }

    function updateBuyFees(
        uint256 _devFee,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) external onlyOwner {
        buyDevFee = _devFee;
        buyLiquidityFee = _liquidityFee;
        buyMarketingFee = _marketingFee;
        buyTotalFees = buyDevFee + buyLiquidityFee + buyMarketingFee;
    }

    function updateSellFees(
        uint256 _devFee,
        uint256 _liquidityFee,
        uint256 _marketingFee
    ) external onlyOwner {
        sellDevFee = _devFee;
        sellLiquidityFee = _liquidityFee;
        sellMarketingFee = _marketingFee;
        sellTotalFees = sellDevFee + sellLiquidityFee + sellMarketingFee;
    }
 
    // only use to disable contract sales if absolutely necessary (emergency use only)
    function updateSwapEnabled(bool enabled) external onlyOwner(){
        swapEnabled = enabled;
    }
 
    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFees[account] = excluded;
        emit ExcludeFromFees(account, excluded);
    }
 
    function blacklistAccount (address account, bool isBlacklisted) public onlyOwner {
        _blacklist[account] = isBlacklisted;
    }
 
    function setAutomatedMarketMakerPair(address pair, bool value) public onlyOwner {
        require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs");
 
        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        automatedMarketMakerPairs[pair] = value;
 
        emit SetAutomatedMarketMakerPair(pair, value);
    }
 
    function updateMarketingWallet(address newMarketingWallet) external onlyOwner {
        emit marketingWalletUpdated(newMarketingWallet, marketingWallet);
        marketingWallet = newMarketingWallet;
    }
 
    function updateDevWallet(address newWallet) external onlyOwner {
        emit devWalletUpdated(newWallet, devWallet);
        devWallet = newWallet;
    }
 
 
    function isExcludedFromFees(address account) public view returns(bool) {
        return _isExcludedFromFees[account];
    }
 
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(!_blacklist[to] && !_blacklist[from], "You have been blacklisted from transfering tokens");
         if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }
 
        if(limitsInEffect){
            if (
                from != owner() &&
                to != owner() &&
                to != address(0) &&
                to != address(0xdead) &&
                !swapping
            ){
                if(!tradingActive){
                    require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active.");
                }
 
                // at launch if the transfer delay is enabled, ensure the block timestamps for purchasers is set -- during launch.  
                if (transferDelayEnabled){
                    if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){
                        require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed.");
                        _holderLastTransferTimestamp[tx.origin] = block.number;
                    }
                }
 
                //when buy
                if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) {
                        require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount.");
                        require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
 
                //when sell
                else if (automatedMarketMakerPairs[to] && !_isExcludedMaxTransactionAmount[from]) {
                        require(amount <= maxTransactionAmount, "Sell transfer amount exceeds the maxTransactionAmount.");
                }
                else if(!_isExcludedMaxTransactionAmount[to]){
                    require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded");
                }
            }
        }
 
        uint256 contractTokenBalance = balanceOf(address(this));
 
        bool canSwap = contractTokenBalance >= swapTokensAtAmount;
 
        if( 
            canSwap &&
            swapEnabled &&
            !swapping &&
            !automatedMarketMakerPairs[from] &&
            !_isExcludedFromFees[from] &&
            !_isExcludedFromFees[to]
        ) {
            swapping = true;
 
            swapBack();
 
            swapping = false;
        }
 
        bool takeFee = !swapping;
 
        // if any account belongs to _isExcludedFromFee account then remove the fee
        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }
 
        uint256 fees = 0;
        // only take fees on buys/sells, do not take on wallet transfers
        if(takeFee){
            // on sell
            if (automatedMarketMakerPairs[to] && sellTotalFees > 0){
                fees = amount.mul(sellTotalFees).div(100);
                tokensForLiquidity += fees * sellLiquidityFee / sellTotalFees;
                tokensForDev += fees * sellDevFee / sellTotalFees;
                tokensForMarketing += fees * sellMarketingFee / sellTotalFees;
            }
            // on buy
            else if(automatedMarketMakerPairs[from] && buyTotalFees > 0) {
                fees = amount.mul(buyTotalFees).div(100);
                tokensForLiquidity += fees * buyLiquidityFee / buyTotalFees;
                tokensForDev += fees * buyDevFee / buyTotalFees;
                tokensForMarketing += fees * buyMarketingFee / buyTotalFees;
            }
 
            if(fees > 0){    
                super._transfer(from, address(this), fees);
            }
 
            amount -= fees;
        }
 
        super._transfer(from, to, amount);
    }
 
    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,
            address(this),
            block.timestamp
        );
 
    }
 
    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
            address(this),
            block.timestamp
        );
    }
 
    function swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        uint256 totalTokensToSwap = tokensForLiquidity + tokensForMarketing + tokensForDev;
        bool success;
 
        if(contractBalance == 0 || totalTokensToSwap == 0) {return;}
 
        if(contractBalance > swapTokensAtAmount * 20){
          contractBalance = swapTokensAtAmount * 20;
        }
 
        // Halve the amount of liquidity tokens
        uint256 liquidityTokens = contractBalance * tokensForLiquidity / totalTokensToSwap / 2;
        uint256 amountToSwapForETH = contractBalance.sub(liquidityTokens);
 
        uint256 initialETHBalance = address(this).balance;
 
        swapTokensForEth(amountToSwapForETH); 
 
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);
 
        uint256 ethForMarketing = ethBalance.mul(tokensForMarketing).div(totalTokensToSwap);
        uint256 ethForDev = ethBalance.mul(tokensForDev).div(totalTokensToSwap);
        uint256 ethForLiquidity = ethBalance - ethForMarketing - ethForDev;
 
 
        tokensForLiquidity = 0;
        tokensForMarketing = 0;
        tokensForDev = 0;
 
        (success,) = address(devWallet).call{value: ethForDev}("");
 
        if(liquidityTokens > 0 && ethForLiquidity > 0){
            addLiquidity(liquidityTokens, ethForLiquidity);
            emit SwapAndLiquify(amountToSwapForETH, ethForLiquidity, tokensForLiquidity);
        }
 
        (success,) = address(marketingWallet).call{value: address(this).balance}("");
    }
}

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":[],"name":"AutoNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[],"name":"ManualNukeLP","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"devWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newWallet","type":"address"},{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"}],"name":"marketingWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"isBlacklisted","type":"bool"}],"name":"blacklistAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyDevFee","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":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableTransferDelay","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","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":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","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":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellDevFee","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":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForDev","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","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":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newMarketingWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526001600b5f6101000a81548160ff0219169083151502179055505f600b60016101000a81548160ff0219169083151502179055505f600b60026101000a81548160ff0219169083151502179055506001600f5f6101000a81548160ff02191690831515021790555034801562000078575f80fd5b506040518060400160405280600681526020017f4252432d323000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f42524300000000000000000000000000000000000000000000000000000000008152508160039081620000f6919062000e43565b50806004908162000108919062000e43565b5050505f6200011c620006cc60201b60201c565b90508060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f737a250d5630b4cf539739df2c5dacb4c659f2488d9050620001e4816001620006d360201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000262573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000288919062000f8c565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ee573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000314919062000f8c565b6040518363ffffffff1660e01b81526004016200033392919062000fcd565b6020604051808303815f875af115801562000350573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000376919062000f8c565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1681525050620003be60a0516001620006d360201b60201c565b620003d360a0516001620007cc60201b60201c565b5f600f90505f805f600f90505f805f6a115eec47f6cf7e3500000090506103e8600a8262000402919062001025565b6200040e91906200109c565b6008819055506103e8600a8262000426919062001025565b6200043291906200109c565b600a819055506127106005826200044a919062001025565b6200045691906200109c565b600981905550866011819055508560128190555084601381905550601354601254601154620004869190620010d3565b620004929190620010d3565b601081905550836015819055508260168190555081601781905550601754601654601554620004c29190620010d3565b620004ce9190620010d3565b60148190555073bac07f5447a75bacf61f07d7c73561cbd823fa3e60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073bac07f5447a75bacf61f07d7c73561cbd823fa3e60075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200059e620005906200086a60201b60201c565b60016200089260201b60201c565b620005b13060016200089260201b60201c565b620005c661dead60016200089260201b60201c565b620005fa60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660016200089260201b60201c565b6200061c6200060e6200086a60201b60201c565b6001620006d360201b60201c565b6200062f306001620006d360201b60201c565b6200064461dead6001620006d360201b60201c565b6200067860075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d360201b60201c565b620006ac60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166001620006d360201b60201c565b620006be3382620009db60201b60201c565b5050505050505050620012ca565b5f33905090565b620006e3620006cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000774576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200076b906200116b565b60405180910390fd5b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620008a2620006cc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000933576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200092a906200116b565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051620009cf9190620011a7565b60405180910390a25050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000a4c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a439062001210565b60405180910390fd5b62000a5f5f838362000b7860201b60201c565b62000a768160025462000b7d60201b90919060201c565b60028190555062000acd815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205462000b7d60201b90919060201c565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000b6c919062001241565b60405180910390a35050565b505050565b5f80828462000b8d9190620010d3565b90508381101562000bd5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000bcc90620012aa565b60405180910390fd5b8091505092915050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c5b57607f821691505b60208210810362000c715762000c7062000c16565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000cd57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000c98565b62000ce1868362000c98565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d2b62000d2562000d1f8462000cf9565b62000d02565b62000cf9565b9050919050565b5f819050919050565b62000d468362000d0b565b62000d5e62000d558262000d32565b84845462000ca4565b825550505050565b5f90565b62000d7462000d66565b62000d8181848462000d3b565b505050565b5b8181101562000da85762000d9c5f8262000d6a565b60018101905062000d87565b5050565b601f82111562000df75762000dc18162000c77565b62000dcc8462000c89565b8101602085101562000ddc578190505b62000df462000deb8562000c89565b83018262000d86565b50505b505050565b5f82821c905092915050565b5f62000e195f198460080262000dfc565b1980831691505092915050565b5f62000e33838362000e08565b9150826002028217905092915050565b62000e4e8262000bdf565b67ffffffffffffffff81111562000e6a5762000e6962000be9565b5b62000e76825462000c43565b62000e8382828562000dac565b5f60209050601f83116001811462000eb9575f841562000ea4578287015190505b62000eb0858262000e26565b86555062000f1f565b601f19841662000ec98662000c77565b5f5b8281101562000ef25784890151825560018201915060208501945060208101905062000ecb565b8683101562000f12578489015162000f0e601f89168262000e08565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000f568262000f2b565b9050919050565b62000f688162000f4a565b811462000f73575f80fd5b50565b5f8151905062000f868162000f5d565b92915050565b5f6020828403121562000fa45762000fa362000f27565b5b5f62000fb38482850162000f76565b91505092915050565b62000fc78162000f4a565b82525050565b5f60408201905062000fe25f83018562000fbc565b62000ff1602083018462000fbc565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f620010318262000cf9565b91506200103e8362000cf9565b92508282026200104e8162000cf9565b9150828204841483151762001068576200106762000ff8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620010a88262000cf9565b9150620010b58362000cf9565b925082620010c857620010c76200106f565b5b828204905092915050565b5f620010df8262000cf9565b9150620010ec8362000cf9565b925082820190508082111562001107576200110662000ff8565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f620011536020836200110d565b915062001160826200111d565b602082019050919050565b5f6020820190508181035f830152620011848162001145565b9050919050565b5f8115159050919050565b620011a1816200118b565b82525050565b5f602082019050620011bc5f83018462001196565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f620011f8601f836200110d565b91506200120582620011c2565b602082019050919050565b5f6020820190508181035f8301526200122981620011ea565b9050919050565b6200123b8162000cf9565b82525050565b5f602082019050620012565f83018462001230565b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f62001292601b836200110d565b91506200129f826200125c565b602082019050919050565b5f6020820190508181035f830152620012c38162001284565b9050919050565b60805160a051615290620013245f395f8181611215015281816119a80152612ae301525f8181610ce701528181612a8b01528181613bee01528181613ccd01528181613cf401528181613d8a0152613db101526152905ff3fe608060405260043610610302575f3560e01c8063921369131161018f578063c17b5b8c116100db578063dd62ed3e11610094578063f11a24d31161006e578063f11a24d314610b75578063f2fde38b14610b9f578063f637434214610bc7578063f8b45b0514610bf157610309565b8063dd62ed3e14610ae5578063e2f4560514610b21578063e884f26014610b4b57610309565b8063c17b5b8c146109db578063c18bc19514610a03578063c876d0b914610a2b578063c8c8ebe414610a55578063d257b34f14610a7f578063d85ba06314610abb57610309565b8063a0d82dc511610148578063aacebbe311610122578063aacebbe314610925578063b62496f51461094d578063bbc0c74214610989578063c0246668146109b357610309565b8063a0d82dc514610883578063a457c2d7146108ad578063a9059cbb146108e957610309565b8063921369131461078b578063924de9b7146107b557806395d89b41146107dd5780639a7a23d6146108075780639c3b4fdc1461082f5780639fccce321461085957610309565b806349bd5a5e1161024e578063715018a6116102075780637bce5a04116101e15780637bce5a04146106f95780638095d564146107235780638a8c523c1461074b5780638da5cb5b1461076157610309565b8063715018a614610691578063751039fc146106a75780637571336a146106d157610309565b806349bd5a5e146105715780634a62bb651461059b5780634fbee193146105c55780636a486a8e146106015780636ddd17131461062b57806370a082311461065557610309565b80631a8145bb116102bb57806323b872dd1161029557806323b872dd146104a75780632d5a5d34146104e3578063313ce5671461050b578063395093511461053557610309565b80631a8145bb1461042b5780631f3fed8f14610455578063203e727e1461047f57610309565b806306fdde031461030d578063095ea7b31461033757806310d5de53146103735780631694505e146103af57806318160ddd146103d95780631816467f1461040357610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c1b565b60405161032e9190613f46565b60405180910390f35b348015610342575f80fd5b5061035d60048036038101906103589190613ff7565b610cab565b60405161036a919061404f565b60405180910390f35b34801561037e575f80fd5b5061039960048036038101906103949190614068565b610cc8565b6040516103a6919061404f565b60405180910390f35b3480156103ba575f80fd5b506103c3610ce5565b6040516103d091906140ee565b60405180910390f35b3480156103e4575f80fd5b506103ed610d09565b6040516103fa9190614116565b60405180910390f35b34801561040e575f80fd5b5061042960048036038101906104249190614068565b610d12565b005b348015610436575f80fd5b5061043f610e66565b60405161044c9190614116565b60405180910390f35b348015610460575f80fd5b50610469610e6c565b6040516104769190614116565b60405180910390f35b34801561048a575f80fd5b506104a560048036038101906104a0919061412f565b610e72565b005b3480156104b2575f80fd5b506104cd60048036038101906104c8919061415a565b610f9b565b6040516104da919061404f565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906141d4565b61106f565b005b348015610516575f80fd5b5061051f61115d565b60405161052c919061422d565b60405180910390f35b348015610540575f80fd5b5061055b60048036038101906105569190613ff7565b611165565b604051610568919061404f565b60405180910390f35b34801561057c575f80fd5b50610585611213565b6040516105929190614255565b60405180910390f35b3480156105a6575f80fd5b506105af611237565b6040516105bc919061404f565b60405180910390f35b3480156105d0575f80fd5b506105eb60048036038101906105e69190614068565b611249565b6040516105f8919061404f565b60405180910390f35b34801561060c575f80fd5b5061061561129b565b6040516106229190614116565b60405180910390f35b348015610636575f80fd5b5061063f6112a1565b60405161064c919061404f565b60405180910390f35b348015610660575f80fd5b5061067b60048036038101906106769190614068565b6112b4565b6040516106889190614116565b60405180910390f35b34801561069c575f80fd5b506106a56112f9565b005b3480156106b2575f80fd5b506106bb61144c565b6040516106c8919061404f565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f291906141d4565b611503565b005b348015610704575f80fd5b5061070d6115f1565b60405161071a9190614116565b60405180910390f35b34801561072e575f80fd5b506107496004803603810190610744919061426e565b6115f7565b005b348015610756575f80fd5b5061075f6116ca565b005b34801561076c575f80fd5b5061077561179f565b6040516107829190614255565b60405180910390f35b348015610796575f80fd5b5061079f6117c7565b6040516107ac9190614116565b60405180910390f35b3480156107c0575f80fd5b506107db60048036038101906107d691906142be565b6117cd565b005b3480156107e8575f80fd5b506107f1611880565b6040516107fe9190613f46565b60405180910390f35b348015610812575f80fd5b5061082d600480360381019061082891906141d4565b611910565b005b34801561083a575f80fd5b50610843611a42565b6040516108509190614116565b60405180910390f35b348015610864575f80fd5b5061086d611a48565b60405161087a9190614116565b60405180910390f35b34801561088e575f80fd5b50610897611a4e565b6040516108a49190614116565b60405180910390f35b3480156108b8575f80fd5b506108d360048036038101906108ce9190613ff7565b611a54565b6040516108e0919061404f565b60405180910390f35b3480156108f4575f80fd5b5061090f600480360381019061090a9190613ff7565b611b1c565b60405161091c919061404f565b60405180910390f35b348015610930575f80fd5b5061094b60048036038101906109469190614068565b611b39565b005b348015610958575f80fd5b50610973600480360381019061096e9190614068565b611c8d565b604051610980919061404f565b60405180910390f35b348015610994575f80fd5b5061099d611caa565b6040516109aa919061404f565b60405180910390f35b3480156109be575f80fd5b506109d960048036038101906109d491906141d4565b611cbd565b005b3480156109e6575f80fd5b50610a0160048036038101906109fc919061426e565b611df9565b005b348015610a0e575f80fd5b50610a296004803603810190610a24919061412f565b611ecc565b005b348015610a36575f80fd5b50610a3f611ff5565b604051610a4c919061404f565b60405180910390f35b348015610a60575f80fd5b50610a69612007565b604051610a769190614116565b60405180910390f35b348015610a8a575f80fd5b50610aa56004803603810190610aa0919061412f565b61200d565b604051610ab2919061404f565b60405180910390f35b348015610ac6575f80fd5b50610acf61217b565b604051610adc9190614116565b60405180910390f35b348015610af0575f80fd5b50610b0b6004803603810190610b0691906142e9565b612181565b604051610b189190614116565b60405180910390f35b348015610b2c575f80fd5b50610b35612203565b604051610b429190614116565b60405180910390f35b348015610b56575f80fd5b50610b5f612209565b604051610b6c919061404f565b60405180910390f35b348015610b80575f80fd5b50610b896122c0565b604051610b969190614116565b60405180910390f35b348015610baa575f80fd5b50610bc56004803603810190610bc09190614068565b6122c6565b005b348015610bd2575f80fd5b50610bdb612488565b604051610be89190614116565b60405180910390f35b348015610bfc575f80fd5b50610c0561248e565b604051610c129190614116565b60405180910390f35b606060038054610c2a90614354565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5690614354565b8015610ca15780601f10610c7857610100808354040283529160200191610ca1565b820191905f5260205f20905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b5f610cbe610cb7612494565b848461249b565b6001905092915050565b601d602052805f5260405f205f915054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f600254905090565b610d1a612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f906143ce565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60185481565b610e7a612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff906143ce565b60405180910390fd5b670de0b6b3a76400006103e86001610f1e610d09565b610f289190614419565b610f329190614487565b610f3c9190614487565b811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590614527565b60405180910390fd5b670de0b6b3a764000081610f929190614419565b60088190555050565b5f610fa784848461265e565b61106484610fb3612494565b61105f8560405180606001604052806028815260200161520e6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f611016612494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461338e9092919063ffffffff16565b61249b565b600190509392505050565b611077612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc906143ce565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f611209611171612494565b846112048560015f611181612494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133f090919063ffffffff16565b61249b565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b5f9054906101000a900460ff1681565b5f601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60145481565b600b60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611301612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611386906143ce565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f611455612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da906143ce565b60405180910390fd5b5f600b5f6101000a81548160ff0219169083151502179055506001905090565b61150b612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611590906143ce565b60405180910390fd5b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60115481565b6115ff612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461168d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611684906143ce565b60405180910390fd5b8260138190555081601281905550806011819055506011546012546013546116b59190614545565b6116bf9190614545565b601081905550505050565b6116d2612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611757906143ce565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601b81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b6117d5612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a906143ce565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b60606004805461188f90614354565b80601f01602080910402602001604051908101604052809291908181526020018280546118bb90614354565b80156119065780601f106118dd57610100808354040283529160200191611906565b820191905f5260205f20905b8154815290600101906020018083116118e957829003601f168201915b5050505050905090565b611918612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d906143ce565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b906145e8565b60405180910390fd5b611a3e828261344d565b5050565b60135481565b601a5481565b60175481565b5f611b12611a60612494565b84611b0d856040518060600160405280602581526020016152366025913960015f611a89612494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461338e9092919063ffffffff16565b61249b565b6001905092915050565b5f611b2f611b28612494565b848461265e565b6001905092915050565b611b41612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc6906143ce565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e602052805f5260405f205f915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611cc5612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a906143ce565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ded919061404f565b60405180910390a25050565b611e01612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e86906143ce565b60405180910390fd5b826017819055508160168190555080601581905550601554601654601754611eb79190614545565b611ec19190614545565b601481905550505050565b611ed4612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906143ce565b60405180910390fd5b670de0b6b3a76400006103e86005611f78610d09565b611f829190614419565b611f8c9190614487565b611f969190614487565b811015611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90614676565b60405180910390fd5b670de0b6b3a764000081611fec9190614419565b600a8190555050565b600f5f9054906101000a900460ff1681565b60085481565b5f612016612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209b906143ce565b60405180910390fd5b620186a060016120b2610d09565b6120bc9190614419565b6120c69190614487565b821015612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff90614704565b60405180910390fd5b6103e86005612115610d09565b61211f9190614419565b6121299190614487565b82111561216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216290614792565b60405180910390fd5b8160098190555060019050919050565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b5f612212612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612297906143ce565b60405180910390fd5b5f600f5f6101000a81548160ff0219169083151502179055506001905090565b60125481565b6122ce612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612353906143ce565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c190614820565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612500906148ae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e9061493c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126519190614116565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c3906149ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361273a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273190614a58565b60405180910390fd5b600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156127d85750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90614ae6565b60405180910390fd5b5f810361282e5761282983835f6134eb565b613389565b600b5f9054906101000a900460ff1615612ed55761284a61179f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128b8575061288861179f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128f057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561292a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129435750600560149054906101000a900460ff16155b15612ed457600b60019054906101000a900460ff16612a3757601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129f75750601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2d90614b4e565b60405180910390fd5b5b600f5f9054906101000a900460ff1615612bfa57612a5361179f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612ada57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612bf95743600c5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bad90614c02565b60405180910390fd5b43600c5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c975750601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d3e57600854811115612ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd890614c90565b60405180910390fd5b600a54612ced836112b4565b82612cf89190614545565b1115612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614cf8565b60405180910390fd5b612ed3565b601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ddb5750601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e2a57600854811115612e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1c90614d86565b60405180910390fd5b612ed2565b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612ed157600a54612e84836112b4565b82612e8f9190614545565b1115612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614cf8565b60405180910390fd5b5b5b5b5b5b5f612edf306112b4565b90505f6009548210159050808015612f035750600b60029054906101000a900460ff165b8015612f1c5750600560149054906101000a900460ff16155b8015612f6f5750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fc25750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130155750601c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613058576001600560146101000a81548160ff02191690831515021790555061303d613774565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff16159050601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806131075750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613110575f90505b5f811561337957601e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561316e57505f601454115b156132385761319b606461318d60145488613a4390919063ffffffff16565b613aba90919063ffffffff16565b9050601454601654826131ae9190614419565b6131b89190614487565b60195f8282546131c89190614545565b92505081905550601454601754826131e09190614419565b6131ea9190614487565b601a5f8282546131fa9190614545565b92505081905550601454601554826132129190614419565b61321c9190614487565b60185f82825461322c9190614545565b92505081905550613356565b601e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561328f57505f601054115b15613355576132bc60646132ae60105488613a4390919063ffffffff16565b613aba90919063ffffffff16565b9050601054601254826132cf9190614419565b6132d99190614487565b60195f8282546132e99190614545565b92505081905550601054601354826133019190614419565b61330b9190614487565b601a5f82825461331b9190614545565b92505081905550601054601154826133339190614419565b61333d9190614487565b60185f82825461334d9190614545565b925050819055505b5b5f81111561336a576133698730836134eb565b5b80856133769190614da4565b94505b6133848787876134eb565b505050505b505050565b5f8383111582906133d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133cc9190613f46565b60405180910390fd5b505f83856133e39190614da4565b9050809150509392505050565b5f8082846133fe9190614545565b905083811015613443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343a90614e21565b60405180910390fd5b8091505092915050565b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613559576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613550906149ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be90614a58565b60405180910390fd5b6135d2838383613b03565b61363b816040518060600160405280602681526020016151e8602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461338e9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506136ca815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133f090919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137679190614116565b60405180910390a3505050565b5f61377e306112b4565b90505f601a546018546019546137949190614545565b61379e9190614545565b90505f808314806137ae57505f82145b156137bb57505050613a41565b60146009546137ca9190614419565b8311156137e35760146009546137e09190614419565b92505b5f600283601954866137f59190614419565b6137ff9190614487565b6138099190614487565b90505f61381f8286613b0890919063ffffffff16565b90505f47905061382e82613b51565b5f6138428247613b0890919063ffffffff16565b90505f61386c8761385e60185485613a4390919063ffffffff16565b613aba90919063ffffffff16565b90505f61389688613888601a5486613a4390919063ffffffff16565b613aba90919063ffffffff16565b90505f8183856138a69190614da4565b6138b09190614da4565b90505f6019819055505f6018819055505f601a8190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161390c90614e6c565b5f6040518083038185875af1925050503d805f8114613946576040519150601f19603f3d011682016040523d82523d5f602084013e61394b565b606091505b5050809850505f8711801561395f57505f81115b156139ac5761396e8782613d84565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826019546040516139a393929190614e80565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139f190614e6c565b5f6040518083038185875af1925050503d805f8114613a2b576040519150601f19603f3d011682016040523d82523d5f602084013e613a30565b606091505b505080985050505050505050505050505b565b5f808303613a53575f9050613ab4565b5f8284613a609190614419565b9050828482613a6f9190614487565b14613aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa690614f25565b60405180910390fd5b809150505b92915050565b5f613afb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e5b565b905092915050565b505050565b5f613b4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061338e565b905092915050565b5f600267ffffffffffffffff811115613b6d57613b6c614f43565b5b604051908082528060200260200182016040528015613b9b5781602001602082028036833780820191505090505b50905030815f81518110613bb257613bb1614f70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c799190614fb1565b81600181518110613c8d57613c8c614f70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613cf2307f00000000000000000000000000000000000000000000000000000000000000008461249b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613d539594939291906150cc565b5f604051808303815f87803b158015613d6a575f80fd5b505af1158015613d7c573d5f803e3d5ffd5b505050505050565b613daf307f00000000000000000000000000000000000000000000000000000000000000008461249b565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613e1396959493929190615124565b60606040518083038185885af1158015613e2f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613e549190615197565b5050505050565b5f8083118290613ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e989190613f46565b60405180910390fd5b505f8385613eaf9190614487565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613ef3578082015181840152602081019050613ed8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613f1882613ebc565b613f228185613ec6565b9350613f32818560208601613ed6565b613f3b81613efe565b840191505092915050565b5f6020820190508181035f830152613f5e8184613f0e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f9382613f6a565b9050919050565b613fa381613f89565b8114613fad575f80fd5b50565b5f81359050613fbe81613f9a565b92915050565b5f819050919050565b613fd681613fc4565b8114613fe0575f80fd5b50565b5f81359050613ff181613fcd565b92915050565b5f806040838503121561400d5761400c613f66565b5b5f61401a85828601613fb0565b925050602061402b85828601613fe3565b9150509250929050565b5f8115159050919050565b61404981614035565b82525050565b5f6020820190506140625f830184614040565b92915050565b5f6020828403121561407d5761407c613f66565b5b5f61408a84828501613fb0565b91505092915050565b5f819050919050565b5f6140b66140b16140ac84613f6a565b614093565b613f6a565b9050919050565b5f6140c78261409c565b9050919050565b5f6140d8826140bd565b9050919050565b6140e8816140ce565b82525050565b5f6020820190506141015f8301846140df565b92915050565b61411081613fc4565b82525050565b5f6020820190506141295f830184614107565b92915050565b5f6020828403121561414457614143613f66565b5b5f61415184828501613fe3565b91505092915050565b5f805f6060848603121561417157614170613f66565b5b5f61417e86828701613fb0565b935050602061418f86828701613fb0565b92505060406141a086828701613fe3565b9150509250925092565b6141b381614035565b81146141bd575f80fd5b50565b5f813590506141ce816141aa565b92915050565b5f80604083850312156141ea576141e9613f66565b5b5f6141f785828601613fb0565b9250506020614208858286016141c0565b9150509250929050565b5f60ff82169050919050565b61422781614212565b82525050565b5f6020820190506142405f83018461421e565b92915050565b61424f81613f89565b82525050565b5f6020820190506142685f830184614246565b92915050565b5f805f6060848603121561428557614284613f66565b5b5f61429286828701613fe3565b93505060206142a386828701613fe3565b92505060406142b486828701613fe3565b9150509250925092565b5f602082840312156142d3576142d2613f66565b5b5f6142e0848285016141c0565b91505092915050565b5f80604083850312156142ff576142fe613f66565b5b5f61430c85828601613fb0565b925050602061431d85828601613fb0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061436b57607f821691505b60208210810361437e5761437d614327565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6143b8602083613ec6565b91506143c382614384565b602082019050919050565b5f6020820190508181035f8301526143e5816143ac565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61442382613fc4565b915061442e83613fc4565b925082820261443c81613fc4565b91508282048414831517614453576144526143ec565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61449182613fc4565b915061449c83613fc4565b9250826144ac576144ab61445a565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614511602f83613ec6565b915061451c826144b7565b604082019050919050565b5f6020820190508181035f83015261453e81614505565b9050919050565b5f61454f82613fc4565b915061455a83613fc4565b9250828201905080821115614572576145716143ec565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6145d2603983613ec6565b91506145dd82614578565b604082019050919050565b5f6020820190508181035f8301526145ff816145c6565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614660602483613ec6565b915061466b82614606565b604082019050919050565b5f6020820190508181035f83015261468d81614654565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6146ee603583613ec6565b91506146f982614694565b604082019050919050565b5f6020820190508181035f83015261471b816146e2565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61477c603483613ec6565b915061478782614722565b604082019050919050565b5f6020820190508181035f8301526147a981614770565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61480a602683613ec6565b9150614815826147b0565b604082019050919050565b5f6020820190508181035f830152614837816147fe565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614898602483613ec6565b91506148a38261483e565b604082019050919050565b5f6020820190508181035f8301526148c58161488c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614926602283613ec6565b9150614931826148cc565b604082019050919050565b5f6020820190508181035f8301526149538161491a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6149b4602583613ec6565b91506149bf8261495a565b604082019050919050565b5f6020820190508181035f8301526149e1816149a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614a42602383613ec6565b9150614a4d826149e8565b604082019050919050565b5f6020820190508181035f830152614a6f81614a36565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d20745f8201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b5f614ad0603183613ec6565b9150614adb82614a76565b604082019050919050565b5f6020820190508181035f830152614afd81614ac4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614b38601683613ec6565b9150614b4382614b04565b602082019050919050565b5f6020820190508181035f830152614b6581614b2c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614bec604983613ec6565b9150614bf782614b6c565b606082019050919050565b5f6020820190508181035f830152614c1981614be0565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614c7a603583613ec6565b9150614c8582614c20565b604082019050919050565b5f6020820190508181035f830152614ca781614c6e565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614ce2601383613ec6565b9150614ced82614cae565b602082019050919050565b5f6020820190508181035f830152614d0f81614cd6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614d70603683613ec6565b9150614d7b82614d16565b604082019050919050565b5f6020820190508181035f830152614d9d81614d64565b9050919050565b5f614dae82613fc4565b9150614db983613fc4565b9250828203905081811115614dd157614dd06143ec565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614e0b601b83613ec6565b9150614e1682614dd7565b602082019050919050565b5f6020820190508181035f830152614e3881614dff565b9050919050565b5f81905092915050565b50565b5f614e575f83614e3f565b9150614e6282614e49565b5f82019050919050565b5f614e7682614e4c565b9150819050919050565b5f606082019050614e935f830186614107565b614ea06020830185614107565b614ead6040830184614107565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614f0f602183613ec6565b9150614f1a82614eb5565b604082019050919050565b5f6020820190508181035f830152614f3c81614f03565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614fab81613f9a565b92915050565b5f60208284031215614fc657614fc5613f66565b5b5f614fd384828501614f9d565b91505092915050565b5f819050919050565b5f614fff614ffa614ff584614fdc565b614093565b613fc4565b9050919050565b61500f81614fe5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61504781613f89565b82525050565b5f615058838361503e565b60208301905092915050565b5f602082019050919050565b5f61507a82615015565b615084818561501f565b935061508f8361502f565b805f5b838110156150bf5781516150a6888261504d565b97506150b183615064565b925050600181019050615092565b5085935050505092915050565b5f60a0820190506150df5f830188614107565b6150ec6020830187615006565b81810360408301526150fe8186615070565b905061510d6060830185614246565b61511a6080830184614107565b9695505050505050565b5f60c0820190506151375f830189614246565b6151446020830188614107565b6151516040830187615006565b61515e6060830186615006565b61516b6080830185614246565b61517860a0830184614107565b979650505050505050565b5f8151905061519181613fcd565b92915050565b5f805f606084860312156151ae576151ad613f66565b5b5f6151bb86828701615183565b93505060206151cc86828701615183565b92505060406151dd86828701615183565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d88cf4b3c059c7c3b0435c0c6de60b46aceedfe4782614bf1a438328a7a333ad64736f6c63430008170033

Deployed Bytecode

0x608060405260043610610302575f3560e01c8063921369131161018f578063c17b5b8c116100db578063dd62ed3e11610094578063f11a24d31161006e578063f11a24d314610b75578063f2fde38b14610b9f578063f637434214610bc7578063f8b45b0514610bf157610309565b8063dd62ed3e14610ae5578063e2f4560514610b21578063e884f26014610b4b57610309565b8063c17b5b8c146109db578063c18bc19514610a03578063c876d0b914610a2b578063c8c8ebe414610a55578063d257b34f14610a7f578063d85ba06314610abb57610309565b8063a0d82dc511610148578063aacebbe311610122578063aacebbe314610925578063b62496f51461094d578063bbc0c74214610989578063c0246668146109b357610309565b8063a0d82dc514610883578063a457c2d7146108ad578063a9059cbb146108e957610309565b8063921369131461078b578063924de9b7146107b557806395d89b41146107dd5780639a7a23d6146108075780639c3b4fdc1461082f5780639fccce321461085957610309565b806349bd5a5e1161024e578063715018a6116102075780637bce5a04116101e15780637bce5a04146106f95780638095d564146107235780638a8c523c1461074b5780638da5cb5b1461076157610309565b8063715018a614610691578063751039fc146106a75780637571336a146106d157610309565b806349bd5a5e146105715780634a62bb651461059b5780634fbee193146105c55780636a486a8e146106015780636ddd17131461062b57806370a082311461065557610309565b80631a8145bb116102bb57806323b872dd1161029557806323b872dd146104a75780632d5a5d34146104e3578063313ce5671461050b578063395093511461053557610309565b80631a8145bb1461042b5780631f3fed8f14610455578063203e727e1461047f57610309565b806306fdde031461030d578063095ea7b31461033757806310d5de53146103735780631694505e146103af57806318160ddd146103d95780631816467f1461040357610309565b3661030957005b5f80fd5b348015610318575f80fd5b50610321610c1b565b60405161032e9190613f46565b60405180910390f35b348015610342575f80fd5b5061035d60048036038101906103589190613ff7565b610cab565b60405161036a919061404f565b60405180910390f35b34801561037e575f80fd5b5061039960048036038101906103949190614068565b610cc8565b6040516103a6919061404f565b60405180910390f35b3480156103ba575f80fd5b506103c3610ce5565b6040516103d091906140ee565b60405180910390f35b3480156103e4575f80fd5b506103ed610d09565b6040516103fa9190614116565b60405180910390f35b34801561040e575f80fd5b5061042960048036038101906104249190614068565b610d12565b005b348015610436575f80fd5b5061043f610e66565b60405161044c9190614116565b60405180910390f35b348015610460575f80fd5b50610469610e6c565b6040516104769190614116565b60405180910390f35b34801561048a575f80fd5b506104a560048036038101906104a0919061412f565b610e72565b005b3480156104b2575f80fd5b506104cd60048036038101906104c8919061415a565b610f9b565b6040516104da919061404f565b60405180910390f35b3480156104ee575f80fd5b50610509600480360381019061050491906141d4565b61106f565b005b348015610516575f80fd5b5061051f61115d565b60405161052c919061422d565b60405180910390f35b348015610540575f80fd5b5061055b60048036038101906105569190613ff7565b611165565b604051610568919061404f565b60405180910390f35b34801561057c575f80fd5b50610585611213565b6040516105929190614255565b60405180910390f35b3480156105a6575f80fd5b506105af611237565b6040516105bc919061404f565b60405180910390f35b3480156105d0575f80fd5b506105eb60048036038101906105e69190614068565b611249565b6040516105f8919061404f565b60405180910390f35b34801561060c575f80fd5b5061061561129b565b6040516106229190614116565b60405180910390f35b348015610636575f80fd5b5061063f6112a1565b60405161064c919061404f565b60405180910390f35b348015610660575f80fd5b5061067b60048036038101906106769190614068565b6112b4565b6040516106889190614116565b60405180910390f35b34801561069c575f80fd5b506106a56112f9565b005b3480156106b2575f80fd5b506106bb61144c565b6040516106c8919061404f565b60405180910390f35b3480156106dc575f80fd5b506106f760048036038101906106f291906141d4565b611503565b005b348015610704575f80fd5b5061070d6115f1565b60405161071a9190614116565b60405180910390f35b34801561072e575f80fd5b506107496004803603810190610744919061426e565b6115f7565b005b348015610756575f80fd5b5061075f6116ca565b005b34801561076c575f80fd5b5061077561179f565b6040516107829190614255565b60405180910390f35b348015610796575f80fd5b5061079f6117c7565b6040516107ac9190614116565b60405180910390f35b3480156107c0575f80fd5b506107db60048036038101906107d691906142be565b6117cd565b005b3480156107e8575f80fd5b506107f1611880565b6040516107fe9190613f46565b60405180910390f35b348015610812575f80fd5b5061082d600480360381019061082891906141d4565b611910565b005b34801561083a575f80fd5b50610843611a42565b6040516108509190614116565b60405180910390f35b348015610864575f80fd5b5061086d611a48565b60405161087a9190614116565b60405180910390f35b34801561088e575f80fd5b50610897611a4e565b6040516108a49190614116565b60405180910390f35b3480156108b8575f80fd5b506108d360048036038101906108ce9190613ff7565b611a54565b6040516108e0919061404f565b60405180910390f35b3480156108f4575f80fd5b5061090f600480360381019061090a9190613ff7565b611b1c565b60405161091c919061404f565b60405180910390f35b348015610930575f80fd5b5061094b60048036038101906109469190614068565b611b39565b005b348015610958575f80fd5b50610973600480360381019061096e9190614068565b611c8d565b604051610980919061404f565b60405180910390f35b348015610994575f80fd5b5061099d611caa565b6040516109aa919061404f565b60405180910390f35b3480156109be575f80fd5b506109d960048036038101906109d491906141d4565b611cbd565b005b3480156109e6575f80fd5b50610a0160048036038101906109fc919061426e565b611df9565b005b348015610a0e575f80fd5b50610a296004803603810190610a24919061412f565b611ecc565b005b348015610a36575f80fd5b50610a3f611ff5565b604051610a4c919061404f565b60405180910390f35b348015610a60575f80fd5b50610a69612007565b604051610a769190614116565b60405180910390f35b348015610a8a575f80fd5b50610aa56004803603810190610aa0919061412f565b61200d565b604051610ab2919061404f565b60405180910390f35b348015610ac6575f80fd5b50610acf61217b565b604051610adc9190614116565b60405180910390f35b348015610af0575f80fd5b50610b0b6004803603810190610b0691906142e9565b612181565b604051610b189190614116565b60405180910390f35b348015610b2c575f80fd5b50610b35612203565b604051610b429190614116565b60405180910390f35b348015610b56575f80fd5b50610b5f612209565b604051610b6c919061404f565b60405180910390f35b348015610b80575f80fd5b50610b896122c0565b604051610b969190614116565b60405180910390f35b348015610baa575f80fd5b50610bc56004803603810190610bc09190614068565b6122c6565b005b348015610bd2575f80fd5b50610bdb612488565b604051610be89190614116565b60405180910390f35b348015610bfc575f80fd5b50610c0561248e565b604051610c129190614116565b60405180910390f35b606060038054610c2a90614354565b80601f0160208091040260200160405190810160405280929190818152602001828054610c5690614354565b8015610ca15780601f10610c7857610100808354040283529160200191610ca1565b820191905f5260205f20905b815481529060010190602001808311610c8457829003601f168201915b5050505050905090565b5f610cbe610cb7612494565b848461249b565b6001905092915050565b601d602052805f5260405f205f915054906101000a900460ff1681565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b5f600254905090565b610d1a612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9f906143ce565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f90b8024c4923d3873ff5b9fcb43d0360d4b9217fa41225d07ba379993552e74360405160405180910390a38060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60195481565b60185481565b610e7a612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eff906143ce565b60405180910390fd5b670de0b6b3a76400006103e86001610f1e610d09565b610f289190614419565b610f329190614487565b610f3c9190614487565b811015610f7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7590614527565b60405180910390fd5b670de0b6b3a764000081610f929190614419565b60088190555050565b5f610fa784848461265e565b61106484610fb3612494565b61105f8560405180606001604052806028815260200161520e6028913960015f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f611016612494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461338e9092919063ffffffff16565b61249b565b600190509392505050565b611077612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fc906143ce565b60405180910390fd5b80600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f6012905090565b5f611209611171612494565b846112048560015f611181612494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133f090919063ffffffff16565b61249b565b6001905092915050565b7f000000000000000000000000f6e5ced3921126ae39d643b731748688860a0f8081565b600b5f9054906101000a900460ff1681565b5f601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b60145481565b600b60029054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611301612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461138f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611386906143ce565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f611455612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114da906143ce565b60405180910390fd5b5f600b5f6101000a81548160ff0219169083151502179055506001905090565b61150b612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611599576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611590906143ce565b60405180910390fd5b80601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60115481565b6115ff612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461168d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611684906143ce565b60405180910390fd5b8260138190555081601281905550806011819055506011546012546013546116b59190614545565b6116bf9190614545565b601081905550505050565b6116d2612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611760576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611757906143ce565b60405180910390fd5b6001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff02191690831515021790555043601b81905550565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60155481565b6117d5612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611863576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185a906143ce565b60405180910390fd5b80600b60026101000a81548160ff02191690831515021790555050565b60606004805461188f90614354565b80601f01602080910402602001604051908101604052809291908181526020018280546118bb90614354565b80156119065780601f106118dd57610100808354040283529160200191611906565b820191905f5260205f20905b8154815290600101906020018083116118e957829003601f168201915b5050505050905090565b611918612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199d906143ce565b60405180910390fd5b7f000000000000000000000000f6e5ced3921126ae39d643b731748688860a0f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2b906145e8565b60405180910390fd5b611a3e828261344d565b5050565b60135481565b601a5481565b60175481565b5f611b12611a60612494565b84611b0d856040518060600160405280602581526020016152366025913960015f611a89612494565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461338e9092919063ffffffff16565b61249b565b6001905092915050565b5f611b2f611b28612494565b848461265e565b6001905092915050565b611b41612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bc6906143ce565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fa751787977eeb3902e30e1d19ca00c6ad274a1f622c31a206e32366700b0567460405160405180910390a38060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601e602052805f5260405f205f915054906101000a900460ff1681565b600b60019054906101000a900460ff1681565b611cc5612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d4a906143ce565b60405180910390fd5b80601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611ded919061404f565b60405180910390a25050565b611e01612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e86906143ce565b60405180910390fd5b826017819055508160168190555080601581905550601554601654601754611eb79190614545565b611ec19190614545565b601481905550505050565b611ed4612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906143ce565b60405180910390fd5b670de0b6b3a76400006103e86005611f78610d09565b611f829190614419565b611f8c9190614487565b611f969190614487565b811015611fd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fcf90614676565b60405180910390fd5b670de0b6b3a764000081611fec9190614419565b600a8190555050565b600f5f9054906101000a900460ff1681565b60085481565b5f612016612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209b906143ce565b60405180910390fd5b620186a060016120b2610d09565b6120bc9190614419565b6120c69190614487565b821015612108576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ff90614704565b60405180910390fd5b6103e86005612115610d09565b61211f9190614419565b6121299190614487565b82111561216b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216290614792565b60405180910390fd5b8160098190555060019050919050565b60105481565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60095481565b5f612212612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612297906143ce565b60405180910390fd5b5f600f5f6101000a81548160ff0219169083151502179055506001905090565b60125481565b6122ce612494565b73ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461235c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612353906143ce565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036123ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c190614820565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38060055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60165481565b600a5481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612509576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612500906148ae565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256e9061493c565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126519190614116565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036126cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126c3906149ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361273a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273190614a58565b60405180910390fd5b600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156127d85750600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b612817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280e90614ae6565b60405180910390fd5b5f810361282e5761282983835f6134eb565b613389565b600b5f9054906101000a900460ff1615612ed55761284a61179f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156128b8575061288861179f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128f057505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561292a575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129435750600560149054906101000a900460ff16155b15612ed457600b60019054906101000a900460ff16612a3757601c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806129f75750601c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612a36576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a2d90614b4e565b60405180910390fd5b5b600f5f9054906101000a900460ff1615612bfa57612a5361179f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612ada57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612b3257507f000000000000000000000000f6e5ced3921126ae39d643b731748688860a0f8073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612bf95743600c5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bad90614c02565b60405180910390fd5b43600c5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612c975750601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612d3e57600854811115612ce1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd890614c90565b60405180910390fd5b600a54612ced836112b4565b82612cf89190614545565b1115612d39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d3090614cf8565b60405180910390fd5b612ed3565b601e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612ddb5750601d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e2a57600854811115612e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1c90614d86565b60405180910390fd5b612ed2565b601d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612ed157600a54612e84836112b4565b82612e8f9190614545565b1115612ed0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ec790614cf8565b60405180910390fd5b5b5b5b5b5b5f612edf306112b4565b90505f6009548210159050808015612f035750600b60029054906101000a900460ff165b8015612f1c5750600560149054906101000a900460ff16155b8015612f6f5750601e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612fc25750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156130155750601c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15613058576001600560146101000a81548160ff02191690831515021790555061303d613774565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff16159050601c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806131075750601c5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15613110575f90505b5f811561337957601e5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561316e57505f601454115b156132385761319b606461318d60145488613a4390919063ffffffff16565b613aba90919063ffffffff16565b9050601454601654826131ae9190614419565b6131b89190614487565b60195f8282546131c89190614545565b92505081905550601454601754826131e09190614419565b6131ea9190614487565b601a5f8282546131fa9190614545565b92505081905550601454601554826132129190614419565b61321c9190614487565b60185f82825461322c9190614545565b92505081905550613356565b601e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561328f57505f601054115b15613355576132bc60646132ae60105488613a4390919063ffffffff16565b613aba90919063ffffffff16565b9050601054601254826132cf9190614419565b6132d99190614487565b60195f8282546132e99190614545565b92505081905550601054601354826133019190614419565b61330b9190614487565b601a5f82825461331b9190614545565b92505081905550601054601154826133339190614419565b61333d9190614487565b60185f82825461334d9190614545565b925050819055505b5b5f81111561336a576133698730836134eb565b5b80856133769190614da4565b94505b6133848787876134eb565b505050505b505050565b5f8383111582906133d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133cc9190613f46565b60405180910390fd5b505f83856133e39190614da4565b9050809150509392505050565b5f8082846133fe9190614545565b905083811015613443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161343a90614e21565b60405180910390fd5b8091505092915050565b80601e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603613559576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613550906149ca565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036135c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016135be90614a58565b60405180910390fd5b6135d2838383613b03565b61363b816040518060600160405280602681526020016151e8602691395f808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461338e9092919063ffffffff16565b5f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506136ca815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546133f090919063ffffffff16565b5f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516137679190614116565b60405180910390a3505050565b5f61377e306112b4565b90505f601a546018546019546137949190614545565b61379e9190614545565b90505f808314806137ae57505f82145b156137bb57505050613a41565b60146009546137ca9190614419565b8311156137e35760146009546137e09190614419565b92505b5f600283601954866137f59190614419565b6137ff9190614487565b6138099190614487565b90505f61381f8286613b0890919063ffffffff16565b90505f47905061382e82613b51565b5f6138428247613b0890919063ffffffff16565b90505f61386c8761385e60185485613a4390919063ffffffff16565b613aba90919063ffffffff16565b90505f61389688613888601a5486613a4390919063ffffffff16565b613aba90919063ffffffff16565b90505f8183856138a69190614da4565b6138b09190614da4565b90505f6019819055505f6018819055505f601a8190555060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161390c90614e6c565b5f6040518083038185875af1925050503d805f8114613946576040519150601f19603f3d011682016040523d82523d5f602084013e61394b565b606091505b5050809850505f8711801561395f57505f81115b156139ac5761396e8782613d84565b7f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb56186826019546040516139a393929190614e80565b60405180910390a15b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16476040516139f190614e6c565b5f6040518083038185875af1925050503d805f8114613a2b576040519150601f19603f3d011682016040523d82523d5f602084013e613a30565b606091505b505080985050505050505050505050505b565b5f808303613a53575f9050613ab4565b5f8284613a609190614419565b9050828482613a6f9190614487565b14613aaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613aa690614f25565b60405180910390fd5b809150505b92915050565b5f613afb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613e5b565b905092915050565b505050565b5f613b4983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061338e565b905092915050565b5f600267ffffffffffffffff811115613b6d57613b6c614f43565b5b604051908082528060200260200182016040528015613b9b5781602001602082028036833780820191505090505b50905030815f81518110613bb257613bb1614f70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613c55573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613c799190614fb1565b81600181518110613c8d57613c8c614f70565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613cf2307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461249b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401613d539594939291906150cc565b5f604051808303815f87803b158015613d6a575f80fd5b505af1158015613d7c573d5f803e3d5ffd5b505050505050565b613daf307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461249b565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f8030426040518863ffffffff1660e01b8152600401613e1396959493929190615124565b60606040518083038185885af1158015613e2f573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190613e549190615197565b5050505050565b5f8083118290613ea1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613e989190613f46565b60405180910390fd5b505f8385613eaf9190614487565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613ef3578082015181840152602081019050613ed8565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613f1882613ebc565b613f228185613ec6565b9350613f32818560208601613ed6565b613f3b81613efe565b840191505092915050565b5f6020820190508181035f830152613f5e8184613f0e565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f9382613f6a565b9050919050565b613fa381613f89565b8114613fad575f80fd5b50565b5f81359050613fbe81613f9a565b92915050565b5f819050919050565b613fd681613fc4565b8114613fe0575f80fd5b50565b5f81359050613ff181613fcd565b92915050565b5f806040838503121561400d5761400c613f66565b5b5f61401a85828601613fb0565b925050602061402b85828601613fe3565b9150509250929050565b5f8115159050919050565b61404981614035565b82525050565b5f6020820190506140625f830184614040565b92915050565b5f6020828403121561407d5761407c613f66565b5b5f61408a84828501613fb0565b91505092915050565b5f819050919050565b5f6140b66140b16140ac84613f6a565b614093565b613f6a565b9050919050565b5f6140c78261409c565b9050919050565b5f6140d8826140bd565b9050919050565b6140e8816140ce565b82525050565b5f6020820190506141015f8301846140df565b92915050565b61411081613fc4565b82525050565b5f6020820190506141295f830184614107565b92915050565b5f6020828403121561414457614143613f66565b5b5f61415184828501613fe3565b91505092915050565b5f805f6060848603121561417157614170613f66565b5b5f61417e86828701613fb0565b935050602061418f86828701613fb0565b92505060406141a086828701613fe3565b9150509250925092565b6141b381614035565b81146141bd575f80fd5b50565b5f813590506141ce816141aa565b92915050565b5f80604083850312156141ea576141e9613f66565b5b5f6141f785828601613fb0565b9250506020614208858286016141c0565b9150509250929050565b5f60ff82169050919050565b61422781614212565b82525050565b5f6020820190506142405f83018461421e565b92915050565b61424f81613f89565b82525050565b5f6020820190506142685f830184614246565b92915050565b5f805f6060848603121561428557614284613f66565b5b5f61429286828701613fe3565b93505060206142a386828701613fe3565b92505060406142b486828701613fe3565b9150509250925092565b5f602082840312156142d3576142d2613f66565b5b5f6142e0848285016141c0565b91505092915050565b5f80604083850312156142ff576142fe613f66565b5b5f61430c85828601613fb0565b925050602061431d85828601613fb0565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061436b57607f821691505b60208210810361437e5761437d614327565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6143b8602083613ec6565b91506143c382614384565b602082019050919050565b5f6020820190508181035f8301526143e5816143ac565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61442382613fc4565b915061442e83613fc4565b925082820261443c81613fc4565b91508282048414831517614453576144526143ec565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61449182613fc4565b915061449c83613fc4565b9250826144ac576144ab61445a565b5b828204905092915050565b7f43616e6e6f7420736574206d61785472616e73616374696f6e416d6f756e74205f8201527f6c6f776572207468616e20302e31250000000000000000000000000000000000602082015250565b5f614511602f83613ec6565b915061451c826144b7565b604082019050919050565b5f6020820190508181035f83015261453e81614505565b9050919050565b5f61454f82613fc4565b915061455a83613fc4565b9250828201905080821115614572576145716143ec565b5b92915050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f6145d2603983613ec6565b91506145dd82614578565b604082019050919050565b5f6020820190508181035f8301526145ff816145c6565b9050919050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f614660602483613ec6565b915061466b82614606565b604082019050919050565b5f6020820190508181035f83015261468d81614654565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f6146ee603583613ec6565b91506146f982614694565b604082019050919050565b5f6020820190508181035f83015261471b816146e2565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b5f61477c603483613ec6565b915061478782614722565b604082019050919050565b5f6020820190508181035f8301526147a981614770565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61480a602683613ec6565b9150614815826147b0565b604082019050919050565b5f6020820190508181035f830152614837816147fe565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614898602483613ec6565b91506148a38261483e565b604082019050919050565b5f6020820190508181035f8301526148c58161488c565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f614926602283613ec6565b9150614931826148cc565b604082019050919050565b5f6020820190508181035f8301526149538161491a565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6149b4602583613ec6565b91506149bf8261495a565b604082019050919050565b5f6020820190508181035f8301526149e1816149a8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f614a42602383613ec6565b9150614a4d826149e8565b604082019050919050565b5f6020820190508181035f830152614a6f81614a36565b9050919050565b7f596f752068617665206265656e20626c61636b6c69737465642066726f6d20745f8201527f72616e73666572696e6720746f6b656e73000000000000000000000000000000602082015250565b5f614ad0603183613ec6565b9150614adb82614a76565b604082019050919050565b5f6020820190508181035f830152614afd81614ac4565b9050919050565b7f54726164696e67206973206e6f74206163746976652e000000000000000000005f82015250565b5f614b38601683613ec6565b9150614b4382614b04565b602082019050919050565b5f6020820190508181035f830152614b6581614b2c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614bec604983613ec6565b9150614bf782614b6c565b606082019050919050565b5f6020820190508181035f830152614c1981614be0565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b5f614c7a603583613ec6565b9150614c8582614c20565b604082019050919050565b5f6020820190508181035f830152614ca781614c6e565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614ce2601383613ec6565b9150614ced82614cae565b602082019050919050565b5f6020820190508181035f830152614d0f81614cd6565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d61785472616e73616374696f6e416d6f756e742e00000000000000000000602082015250565b5f614d70603683613ec6565b9150614d7b82614d16565b604082019050919050565b5f6020820190508181035f830152614d9d81614d64565b9050919050565b5f614dae82613fc4565b9150614db983613fc4565b9250828203905081811115614dd157614dd06143ec565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614e0b601b83613ec6565b9150614e1682614dd7565b602082019050919050565b5f6020820190508181035f830152614e3881614dff565b9050919050565b5f81905092915050565b50565b5f614e575f83614e3f565b9150614e6282614e49565b5f82019050919050565b5f614e7682614e4c565b9150819050919050565b5f606082019050614e935f830186614107565b614ea06020830185614107565b614ead6040830184614107565b949350505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f614f0f602183613ec6565b9150614f1a82614eb5565b604082019050919050565b5f6020820190508181035f830152614f3c81614f03565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050614fab81613f9a565b92915050565b5f60208284031215614fc657614fc5613f66565b5b5f614fd384828501614f9d565b91505092915050565b5f819050919050565b5f614fff614ffa614ff584614fdc565b614093565b613fc4565b9050919050565b61500f81614fe5565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61504781613f89565b82525050565b5f615058838361503e565b60208301905092915050565b5f602082019050919050565b5f61507a82615015565b615084818561501f565b935061508f8361502f565b805f5b838110156150bf5781516150a6888261504d565b97506150b183615064565b925050600181019050615092565b5085935050505092915050565b5f60a0820190506150df5f830188614107565b6150ec6020830187615006565b81810360408301526150fe8186615070565b905061510d6060830185614246565b61511a6080830184614107565b9695505050505050565b5f60c0820190506151375f830189614246565b6151446020830188614107565b6151516040830187615006565b61515e6060830186615006565b61516b6080830185614246565b61517860a0830184614107565b979650505050505050565b5f8151905061519181613fcd565b92915050565b5f805f606084860312156151ae576151ad613f66565b5b5f6151bb86828701615183565b93505060206151cc86828701615183565b92505060406151dd86828701615183565b915050925092509256fe45524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220d88cf4b3c059c7c3b0435c0c6de60b46aceedfe4782614bf1a438328a7a333ad64736f6c63430008170033

Deployed Bytecode Sourcemap

23979:15540:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11177:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12091:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25517:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24062:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11498:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32356:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25231:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25191;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29846:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12268:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31543:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11397:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12631:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24120:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24388:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32525:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25045:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24468:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11614:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17152:148;;;;;;;;;;;;;:::i;:::-;;29063:120;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30313:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24937:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30465:332;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28862:148;;;;;;;;;;;;;:::i;:::-;;16938:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25080:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31242:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11285:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31687:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25011:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25271:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25156:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12857:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11749:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32139:208;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25740:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24428:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31352:182;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30805:340;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30089:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24854:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24272:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29451:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24903:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11932:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24314:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29245:134;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24974:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17308:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;25118:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24354:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11177:100;11231:13;11264:5;11257:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11177:100;:::o;12091:169::-;12174:4;12191:39;12200:12;:10;:12::i;:::-;12214:7;12223:6;12191:8;:39::i;:::-;12248:4;12241:11;;12091:169;;;;:::o;25517:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;24062:51::-;;;:::o;11498:108::-;11559:7;11586:12;;11579:19;;11498:108;:::o;32356:157::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32463:9:::1;;;;;;;;;;;32435:38;;32452:9;32435:38;;;;;;;;;;;;32496:9;32484;;:21;;;;;;;;;;;;;;;;;;32356:157:::0;:::o;25231:33::-;;;;:::o;25191:::-;;;;:::o;29846:234::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29965:4:::1;29959;29955:1;29939:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;29938:31;;;;:::i;:::-;29928:6;:41;;29920:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;30065:6;30055;:17;;;;:::i;:::-;30032:20;:40;;;;29846:234:::0;:::o;12268:355::-;12408:4;12425:36;12435:6;12443:9;12454:6;12425:9;:36::i;:::-;12472:121;12481:6;12489:12;:10;:12::i;:::-;12503:89;12541:6;12503:89;;;;;;;;;;;;;;;;;:11;:19;12515:6;12503:19;;;;;;;;;;;;;;;:33;12523:12;:10;:12::i;:::-;12503:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12472:8;:121::i;:::-;12611:4;12604:11;;12268:355;;;;;:::o;31543:135::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31657:13:::1;31635:10;:19;31646:7;31635:19;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;31543:135:::0;;:::o;11397:93::-;11455:5;11480:2;11473:9;;11397:93;:::o;12631:218::-;12719:4;12736:83;12745:12;:10;:12::i;:::-;12759:7;12768:50;12807:10;12768:11;:25;12780:12;:10;:12::i;:::-;12768:25;;;;;;;;;;;;;;;:34;12794:7;12768:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;12736:8;:83::i;:::-;12837:4;12830:11;;12631:218;;;;:::o;24120:38::-;;;:::o;24388:33::-;;;;;;;;;;;;;:::o;32525:125::-;32590:4;32614:19;:28;32634:7;32614:28;;;;;;;;;;;;;;;;;;;;;;;;;32607:35;;32525:125;;;:::o;25045:28::-;;;;:::o;24468:31::-;;;;;;;;;;;;;:::o;11614:127::-;11688:7;11715:9;:18;11725:7;11715:18;;;;;;;;;;;;;;;;11708:25;;11614:127;;;:::o;17152:148::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17259:1:::1;17222:40;;17243:6;;;;;;;;;;;17222:40;;;;;;;;;;;;17290:1;17273:6;;:19;;;;;;;;;;;;;;;;;;17152:148::o:0;29063:120::-;29115:4;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29148:5:::1;29131:14;;:22;;;;;;;;;;;;;;;;;;29171:4;29164:11;;29063:120:::0;:::o;30313:144::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30445:4:::1;30403:31;:39;30435:6;30403:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;30313:144:::0;;:::o;24937:30::-;;;;:::o;30465:332::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30627:7:::1;30615:9;:19;;;;30663:13;30645:15;:31;;;;30705:13;30687:15;:31;;;;30774:15;;30756;;30744:9;;:27;;;;:::i;:::-;:45;;;;:::i;:::-;30729:12;:60;;;;30465:332:::0;;;:::o;28862:148::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;28933:4:::1;28917:13;;:20;;;;;;;;;;;;;;;;;;28962:4;28948:11;;:18;;;;;;;;;;;;;;;;;;28990:12;28977:10;:25;;;;28862:148::o:0;16938:79::-;16976:7;17003:6;;;;;;;;;;;16996:13;;16938:79;:::o;25080:31::-;;;;:::o;31242:101::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31328:7:::1;31314:11;;:21;;;;;;;;;;;;;;;;;;31242:101:::0;:::o;11285:104::-;11341:13;11374:7;11367:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11285:104;:::o;31687:245::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31794:13:::1;31786:21;;:4;:21;;::::0;31778:91:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;31883:41;31912:4;31918:5;31883:28;:41::i;:::-;31687:245:::0;;:::o;25011:24::-;;;;:::o;25271:27::-;;;;:::o;25156:25::-;;;;:::o;12857:269::-;12950:4;12967:129;12976:12;:10;:12::i;:::-;12990:7;12999:96;13038:15;12999:96;;;;;;;;;;;;;;;;;:11;:25;13011:12;:10;:12::i;:::-;12999:25;;;;;;;;;;;;;;;:34;13025:7;12999:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12967:8;:129::i;:::-;13114:4;13107:11;;12857:269;;;;:::o;11749:175::-;11835:4;11852:42;11862:12;:10;:12::i;:::-;11876:9;11887:6;11852:9;:42::i;:::-;11912:4;11905:11;;11749:175;;;;:::o;32139:208::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32276:15:::1;;;;;;;;;;;32233:59;;32256:18;32233:59;;;;;;;;;;;;32321:18;32303:15;;:36;;;;;;;;;;;;;;;;;;32139:208:::0;:::o;25740:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;24428:33::-;;;;;;;;;;;;;:::o;31352:182::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31468:8:::1;31437:19;:28;31457:7;31437:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;31508:7;31492:34;;;31517:8;31492:34;;;;;;:::i;:::-;;;;;;;;31352:182:::0;;:::o;30805:340::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30969:7:::1;30956:10;:20;;;;31006:13;30987:16;:32;;;;31049:13;31030:16;:32;;;;31121:16;;31102;;31089:10;;:29;;;;:::i;:::-;:48;;;;:::i;:::-;31073:13;:64;;;;30805:340:::0;;;:::o;30089:215::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;30211:4:::1;30205;30201:1;30185:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;30184:31;;;;:::i;:::-;30174:6;:41;;30166:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;30289:6;30279;:17;;;;:::i;:::-;30267:9;:29;;;;30089:215:::0;:::o;24854:39::-;;;;;;;;;;;;;:::o;24272:35::-;;;;:::o;29451:386::-;29532:4;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29589:6:::1;29585:1;29569:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;29556:9;:39;;29548:105;;;;;;;;;;;;:::i;:::-;;;;;;;;;29705:4;29701:1;29685:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;29672:9;:37;;29664:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;29798:9;29777:18;:30;;;;29825:4;29818:11;;29451:386:::0;;;:::o;24903:27::-;;;;:::o;11932:151::-;12021:7;12048:11;:18;12060:5;12048:18;;;;;;;;;;;;;;;:27;12067:7;12048:27;;;;;;;;;;;;;;;;12041:34;;11932:151;;;;:::o;24314:33::-;;;;:::o;29245:134::-;29305:4;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;29344:5:::1;29321:20;;:28;;;;;;;;;;;;;;;;;;29367:4;29360:11;;29245:134:::0;:::o;24974:30::-;;;;:::o;17308:244::-;17075:12;:10;:12::i;:::-;17065:22;;:6;;;;;;;;;;;:22;;;17057:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17417:1:::1;17397:22;;:8;:22;;::::0;17389:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;17507:8;17478:38;;17499:6;;;;;;;;;;;17478:38;;;;;;;;;;;;17536:8;17527:6;;:17;;;;;;;;;;;;;;;;;;17308:244:::0;:::o;25118:31::-;;;;:::o;24354:24::-;;;;:::o;6530:98::-;6583:7;6610:10;6603:17;;6530:98;:::o;14533:381::-;14686:1;14669:19;;:5;:19;;;14661:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14767:1;14748:21;;:7;:21;;;14740:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14852:6;14822:11;:18;14834:5;14822:18;;;;;;;;;;;;;;;:27;14841:7;14822:27;;;;;;;;;;;;;;;:36;;;;14890:7;14874:32;;14883:5;14874:32;;;14899:6;14874:32;;;;;;:::i;:::-;;;;;;;;14533:381;;;:::o;32659:4145::-;32807:1;32791:18;;:4;:18;;;32783:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32884:1;32870:16;;:2;:16;;;32862:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;32946:10;:14;32957:2;32946:14;;;;;;;;;;;;;;;;;;;;;;;;;32945:15;:36;;;;;32965:10;:16;32976:4;32965:16;;;;;;;;;;;;;;;;;;;;;;;;;32964:17;32945:36;32937:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;33060:1;33050:6;:11;33047:92;;33078:28;33094:4;33100:2;33104:1;33078:15;:28::i;:::-;33121:7;;33047:92;33155:14;;;;;;;;;;;33152:1811;;;33215:7;:5;:7::i;:::-;33207:15;;:4;:15;;;;:49;;;;;33249:7;:5;:7::i;:::-;33243:13;;:2;:13;;;;33207:49;:86;;;;;33291:1;33277:16;;:2;:16;;;;33207:86;:128;;;;;33328:6;33314:21;;:2;:21;;;;33207:128;:158;;;;;33357:8;;;;;;;;;;;33356:9;33207:158;33185:1767;;;33403:13;;;;;;;;;;;33399:148;;33448:19;:25;33468:4;33448:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;33477:19;:23;33497:2;33477:23;;;;;;;;;;;;;;;;;;;;;;;;;33448:52;33440:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;33399:148;33706:20;;;;;;;;;;;33702:423;;;33760:7;:5;:7::i;:::-;33754:13;;:2;:13;;;;:47;;;;;33785:15;33771:30;;:2;:30;;;;33754:47;:79;;;;;33819:13;33805:28;;:2;:28;;;;33754:79;33750:356;;;33911:12;33869:28;:39;33898:9;33869:39;;;;;;;;;;;;;;;;:54;33861:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;34070:12;34028:28;:39;34057:9;34028:39;;;;;;;;;;;;;;;:54;;;;33750:356;33702:423;34178:25;:31;34204:4;34178:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;34214:31;:35;34246:2;34214:35;;;;;;;;;;;;;;;;;;;;;;;;;34213:36;34178:71;34174:763;;;34296:20;;34286:6;:30;;34278:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;34435:9;;34418:13;34428:2;34418:9;:13::i;:::-;34409:6;:22;;;;:::i;:::-;:35;;34401:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34174:763;;;34547:25;:29;34573:2;34547:29;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;34581:31;:37;34613:4;34581:37;;;;;;;;;;;;;;;;;;;;;;;;;34580:38;34547:71;34543:394;;;34665:20;;34655:6;:30;;34647:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;34543:394;;;34791:31;:35;34823:2;34791:35;;;;;;;;;;;;;;;;;;;;;;;;;34787:150;;34884:9;;34867:13;34877:2;34867:9;:13::i;:::-;34858:6;:22;;;;:::i;:::-;:35;;34850:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34787:150;34543:394;34174:763;33185:1767;33152:1811;34976:28;35007:24;35025:4;35007:9;:24::i;:::-;34976:55;;35045:12;35084:18;;35060:20;:42;;35045:57;;35134:7;:35;;;;;35158:11;;;;;;;;;;;35134:35;:61;;;;;35187:8;;;;;;;;;;;35186:9;35134:61;:110;;;;;35213:25;:31;35239:4;35213:31;;;;;;;;;;;;;;;;;;;;;;;;;35212:32;35134:110;:153;;;;;35262:19;:25;35282:4;35262:25;;;;;;;;;;;;;;;;;;;;;;;;;35261:26;35134:153;:194;;;;;35305:19;:23;35325:2;35305:23;;;;;;;;;;;;;;;;;;;;;;;;;35304:24;35134:194;35116:328;;;35366:4;35355:8;;:15;;;;;;;;;;;;;;;;;;35388:10;:8;:10::i;:::-;35427:5;35416:8;;:16;;;;;;;;;;;;;;;;;;35116:328;35457:12;35473:8;;;;;;;;;;;35472:9;35457:24;;35583:19;:25;35603:4;35583:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;35612:19;:23;35632:2;35612:23;;;;;;;;;;;;;;;;;;;;;;;;;35583:52;35580:99;;;35662:5;35652:15;;35580:99;35692:12;35796:7;35793:957;;;35847:25;:29;35873:2;35847:29;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;35896:1;35880:13;;:17;35847:50;35843:754;;;35924:34;35954:3;35924:25;35935:13;;35924:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;35917:41;;36025:13;;36006:16;;35999:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;35977:18;;:61;;;;;;;:::i;:::-;;;;;;;;36093:13;;36080:10;;36073:4;:17;;;;:::i;:::-;:33;;;;:::i;:::-;36057:12;;:49;;;;;;;:::i;:::-;;;;;;;;36173:13;;36154:16;;36147:4;:23;;;;:::i;:::-;:39;;;;:::i;:::-;36125:18;;:61;;;;;;;:::i;:::-;;;;;;;;35843:754;;;36247:25;:31;36273:4;36247:31;;;;;;;;;;;;;;;;;;;;;;;;;:51;;;;;36297:1;36282:12;;:16;36247:51;36244:353;;;36326:33;36355:3;36326:24;36337:12;;36326:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;36319:40;;36425:12;;36407:15;;36400:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;36378:18;;:59;;;;;;;:::i;:::-;;;;;;;;36491:12;;36479:9;;36472:4;:16;;;;:::i;:::-;:31;;;;:::i;:::-;36456:12;;:47;;;;;;;:::i;:::-;;;;;;;;36569:12;;36551:15;;36544:4;:22;;;;:::i;:::-;:37;;;;:::i;:::-;36522:18;;:59;;;;;;;:::i;:::-;;;;;;;;36244:353;35843:754;36624:1;36617:4;:8;36614:93;;;36649:42;36665:4;36679;36686;36649:15;:42::i;:::-;36614:93;36734:4;36724:14;;;;;:::i;:::-;;;35793:957;36763:33;36779:4;36785:2;36789:6;36763:15;:33::i;:::-;32772:4032;;;;32659:4145;;;;:::o;15415:193::-;15501:7;15534:1;15529;:6;;15537:12;15521:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;15561:9;15577:1;15573;:5;;;;:::i;:::-;15561:17;;15599:1;15592:8;;;15415:193;;;;;:::o;15081:182::-;15139:7;15159:9;15175:1;15171;:5;;;;:::i;:::-;15159:17;;15200:1;15195;:6;;15187:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;15254:1;15247:8;;;15081:182;;;;:::o;31941:189::-;32058:5;32024:25;:31;32050:4;32024:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;32116:5;32082:40;;32110:4;32082:40;;;;;;;;;;;;31941:189;;:::o;13134:575::-;13292:1;13274:20;;:6;:20;;;13266:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;13376:1;13355:23;;:9;:23;;;13347:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;13432:47;13453:6;13461:9;13472:6;13432:20;:47::i;:::-;13513:71;13535:6;13513:71;;;;;;;;;;;;;;;;;:9;:17;13523:6;13513:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;13493:9;:17;13503:6;13493:17;;;;;;;;;;;;;;;:91;;;;13618:32;13643:6;13618:9;:20;13628:9;13618:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;13595:9;:20;13605:9;13595:20;;;;;;;;;;;;;;;:55;;;;13683:9;13666:35;;13675:6;13666:35;;;13694:6;13666:35;;;;;;:::i;:::-;;;;;;;;13134:575;;;:::o;37948:1568::-;37987:23;38013:24;38031:4;38013:9;:24::i;:::-;37987:50;;38048:25;38118:12;;38097:18;;38076;;:39;;;;:::i;:::-;:54;;;;:::i;:::-;38048:82;;38141:12;38189:1;38170:15;:20;:46;;;;38215:1;38194:17;:22;38170:46;38167:60;;;38219:7;;;;;38167:60;38282:2;38261:18;;:23;;;;:::i;:::-;38243:15;:41;38240:111;;;38337:2;38316:18;;:23;;;;:::i;:::-;38298:41;;38240:111;38413:23;38498:1;38478:17;38457:18;;38439:15;:36;;;;:::i;:::-;:56;;;;:::i;:::-;:60;;;;:::i;:::-;38413:86;;38510:26;38539:36;38559:15;38539;:19;;:36;;;;:::i;:::-;38510:65;;38589:25;38617:21;38589:49;;38652:36;38669:18;38652:16;:36::i;:::-;38703:18;38724:44;38750:17;38724:21;:25;;:44;;;;:::i;:::-;38703:65;;38782:23;38808:57;38847:17;38808:34;38823:18;;38808:10;:14;;:34;;;;:::i;:::-;:38;;:57;;;;:::i;:::-;38782:83;;38876:17;38896:51;38929:17;38896:28;38911:12;;38896:10;:14;;:28;;;;:::i;:::-;:32;;:51;;;;:::i;:::-;38876:71;;38958:23;39015:9;38997:15;38984:10;:28;;;;:::i;:::-;:40;;;;:::i;:::-;38958:66;;39062:1;39041:18;:22;;;;39095:1;39074:18;:22;;;;39122:1;39107:12;:16;;;;39158:9;;;;;;;;;;;39150:23;;39181:9;39150:45;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39137:58;;;;;39230:1;39212:15;:19;:42;;;;;39253:1;39235:15;:19;39212:42;39209:210;;;39270:46;39283:15;39300;39270:12;:46::i;:::-;39336:71;39351:18;39371:15;39388:18;;39336:71;;;;;;;;:::i;:::-;;;;;;;;39209:210;39453:15;;;;;;;;;;;39445:29;;39482:21;39445:63;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39432:76;;;;;37976:1540;;;;;;;;;;37948:1568;:::o;15616:254::-;15674:7;15705:1;15700;:6;15696:47;;15730:1;15723:8;;;;15696:47;15756:9;15772:1;15768;:5;;;;:::i;:::-;15756:17;;15801:1;15796;15792;:5;;;;:::i;:::-;:10;15784:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;15861:1;15854:8;;;15616:254;;;;;:::o;15878:132::-;15936:7;15963:39;15967:1;15970;15963:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;15956:46;;15878:132;;;;:::o;14922:125::-;;;;:::o;15271:136::-;15329:7;15356:43;15360:1;15363;15356:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;15349:50;;15271:136;;;;:::o;36813:597::-;36942:21;36980:1;36966:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36942:40;;37011:4;36993;36998:1;36993:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;37037:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;37027:4;37032:1;37027:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;37073:62;37090:4;37105:15;37123:11;37073:8;:62::i;:::-;37175:15;:66;;;37256:11;37282:1;37326:4;37353;37373:15;37175:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36868:542;36813:597;:::o;37419:520::-;37567:62;37584:4;37599:15;37617:11;37567:8;:62::i;:::-;37673:15;:31;;;37712:9;37745:4;37765:11;37791:1;37834;37885:4;37905:15;37673:258;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;37419:520;;:::o;16018:279::-;16104:7;16136:1;16132;:5;16139:12;16124:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;16163:9;16179:1;16175;:5;;;;:::i;:::-;16163:17;;16288:1;16281:8;;;16018:279;;;;;:::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:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:60::-;3809:3;3830:5;3823:12;;3781:60;;;:::o;3847:142::-;3897:9;3930:53;3948:34;3957:24;3975:5;3957:24;:::i;:::-;3948:34;:::i;:::-;3930:53;:::i;:::-;3917:66;;3847:142;;;:::o;3995:126::-;4045:9;4078:37;4109:5;4078:37;:::i;:::-;4065:50;;3995:126;;;:::o;4127:153::-;4204:9;4237:37;4268:5;4237:37;:::i;:::-;4224:50;;4127:153;;;:::o;4286:185::-;4400:64;4458:5;4400:64;:::i;:::-;4395:3;4388:77;4286:185;;:::o;4477:276::-;4597:4;4635:2;4624:9;4620:18;4612:26;;4648:98;4743:1;4732:9;4728:17;4719:6;4648:98;:::i;:::-;4477:276;;;;:::o;4759:118::-;4846:24;4864:5;4846:24;:::i;:::-;4841:3;4834:37;4759:118;;:::o;4883:222::-;4976:4;5014:2;5003:9;4999:18;4991:26;;5027:71;5095:1;5084:9;5080:17;5071:6;5027:71;:::i;:::-;4883:222;;;;:::o;5111:329::-;5170:6;5219:2;5207:9;5198:7;5194:23;5190:32;5187:119;;;5225:79;;:::i;:::-;5187:119;5345:1;5370:53;5415:7;5406:6;5395:9;5391:22;5370:53;:::i;:::-;5360:63;;5316:117;5111:329;;;;:::o;5446:619::-;5523:6;5531;5539;5588:2;5576:9;5567:7;5563:23;5559:32;5556:119;;;5594:79;;:::i;:::-;5556:119;5714:1;5739:53;5784:7;5775:6;5764:9;5760:22;5739:53;:::i;:::-;5729:63;;5685:117;5841:2;5867:53;5912:7;5903:6;5892:9;5888:22;5867:53;:::i;:::-;5857:63;;5812:118;5969:2;5995:53;6040:7;6031:6;6020:9;6016:22;5995:53;:::i;:::-;5985:63;;5940:118;5446:619;;;;;:::o;6071:116::-;6141:21;6156:5;6141:21;:::i;:::-;6134:5;6131:32;6121:60;;6177:1;6174;6167:12;6121:60;6071:116;:::o;6193:133::-;6236:5;6274:6;6261:20;6252:29;;6290:30;6314:5;6290:30;:::i;:::-;6193:133;;;;:::o;6332:468::-;6397:6;6405;6454:2;6442:9;6433:7;6429:23;6425:32;6422:119;;;6460:79;;:::i;:::-;6422:119;6580:1;6605:53;6650:7;6641:6;6630:9;6626:22;6605:53;:::i;:::-;6595:63;;6551:117;6707:2;6733:50;6775:7;6766:6;6755:9;6751:22;6733:50;:::i;:::-;6723:60;;6678:115;6332:468;;;;;:::o;6806:86::-;6841:7;6881:4;6874:5;6870:16;6859:27;;6806:86;;;:::o;6898:112::-;6981:22;6997:5;6981:22;:::i;:::-;6976:3;6969:35;6898:112;;:::o;7016:214::-;7105:4;7143:2;7132:9;7128:18;7120:26;;7156:67;7220:1;7209:9;7205:17;7196:6;7156:67;:::i;:::-;7016:214;;;;:::o;7236:118::-;7323:24;7341:5;7323:24;:::i;:::-;7318:3;7311:37;7236:118;;:::o;7360:222::-;7453:4;7491:2;7480:9;7476:18;7468:26;;7504:71;7572:1;7561:9;7557:17;7548:6;7504:71;:::i;:::-;7360:222;;;;:::o;7588:619::-;7665:6;7673;7681;7730:2;7718:9;7709:7;7705:23;7701:32;7698:119;;;7736:79;;:::i;:::-;7698:119;7856:1;7881:53;7926:7;7917:6;7906:9;7902:22;7881:53;:::i;:::-;7871:63;;7827:117;7983:2;8009:53;8054:7;8045:6;8034:9;8030:22;8009:53;:::i;:::-;7999:63;;7954:118;8111:2;8137:53;8182:7;8173:6;8162:9;8158:22;8137:53;:::i;:::-;8127:63;;8082:118;7588:619;;;;;:::o;8213:323::-;8269:6;8318:2;8306:9;8297:7;8293:23;8289:32;8286:119;;;8324:79;;:::i;:::-;8286:119;8444:1;8469:50;8511:7;8502:6;8491:9;8487:22;8469:50;:::i;:::-;8459:60;;8415:114;8213:323;;;;:::o;8542:474::-;8610:6;8618;8667:2;8655:9;8646:7;8642:23;8638:32;8635:119;;;8673:79;;:::i;:::-;8635:119;8793:1;8818:53;8863:7;8854:6;8843:9;8839:22;8818:53;:::i;:::-;8808:63;;8764:117;8920:2;8946:53;8991:7;8982:6;8971:9;8967:22;8946:53;:::i;:::-;8936:63;;8891:118;8542:474;;;;;:::o;9022:180::-;9070:77;9067:1;9060:88;9167:4;9164:1;9157:15;9191:4;9188:1;9181:15;9208:320;9252:6;9289:1;9283:4;9279:12;9269:22;;9336:1;9330:4;9326:12;9357:18;9347:81;;9413:4;9405:6;9401:17;9391:27;;9347:81;9475:2;9467:6;9464:14;9444:18;9441:38;9438:84;;9494:18;;:::i;:::-;9438:84;9259:269;9208:320;;;:::o;9534:182::-;9674:34;9670:1;9662:6;9658:14;9651:58;9534:182;:::o;9722:366::-;9864:3;9885:67;9949:2;9944:3;9885:67;:::i;:::-;9878:74;;9961:93;10050:3;9961:93;:::i;:::-;10079:2;10074:3;10070:12;10063:19;;9722:366;;;:::o;10094:419::-;10260:4;10298:2;10287:9;10283:18;10275:26;;10347:9;10341:4;10337:20;10333:1;10322:9;10318:17;10311:47;10375:131;10501:4;10375:131;:::i;:::-;10367:139;;10094:419;;;:::o;10519:180::-;10567:77;10564:1;10557:88;10664:4;10661:1;10654:15;10688:4;10685:1;10678:15;10705:410;10745:7;10768:20;10786:1;10768:20;:::i;:::-;10763:25;;10802:20;10820:1;10802:20;:::i;:::-;10797:25;;10857:1;10854;10850:9;10879:30;10897:11;10879:30;:::i;:::-;10868:41;;11058:1;11049:7;11045:15;11042:1;11039:22;11019:1;11012:9;10992:83;10969:139;;11088:18;;:::i;:::-;10969:139;10753:362;10705:410;;;;:::o;11121:180::-;11169:77;11166:1;11159:88;11266:4;11263:1;11256:15;11290:4;11287:1;11280:15;11307:185;11347:1;11364:20;11382:1;11364:20;:::i;:::-;11359:25;;11398:20;11416:1;11398:20;:::i;:::-;11393:25;;11437:1;11427:35;;11442:18;;:::i;:::-;11427:35;11484:1;11481;11477:9;11472:14;;11307:185;;;;:::o;11498:234::-;11638:34;11634:1;11626:6;11622:14;11615:58;11707:17;11702:2;11694:6;11690:15;11683:42;11498:234;:::o;11738:366::-;11880:3;11901:67;11965:2;11960:3;11901:67;:::i;:::-;11894:74;;11977:93;12066:3;11977:93;:::i;:::-;12095:2;12090:3;12086:12;12079:19;;11738:366;;;:::o;12110:419::-;12276:4;12314:2;12303:9;12299:18;12291:26;;12363:9;12357:4;12353:20;12349:1;12338:9;12334:17;12327:47;12391:131;12517:4;12391:131;:::i;:::-;12383:139;;12110:419;;;:::o;12535:191::-;12575:3;12594:20;12612:1;12594:20;:::i;:::-;12589:25;;12628:20;12646:1;12628:20;:::i;:::-;12623:25;;12671:1;12668;12664:9;12657:16;;12692:3;12689:1;12686:10;12683:36;;;12699:18;;:::i;:::-;12683:36;12535:191;;;;:::o;12732:244::-;12872:34;12868:1;12860:6;12856:14;12849:58;12941:27;12936:2;12928:6;12924:15;12917:52;12732:244;:::o;12982:366::-;13124:3;13145:67;13209:2;13204:3;13145:67;:::i;:::-;13138:74;;13221:93;13310:3;13221:93;:::i;:::-;13339:2;13334:3;13330:12;13323:19;;12982:366;;;:::o;13354:419::-;13520:4;13558:2;13547:9;13543:18;13535:26;;13607:9;13601:4;13597:20;13593:1;13582:9;13578:17;13571:47;13635:131;13761:4;13635:131;:::i;:::-;13627:139;;13354:419;;;:::o;13779:223::-;13919:34;13915:1;13907:6;13903:14;13896:58;13988:6;13983:2;13975:6;13971:15;13964:31;13779:223;:::o;14008:366::-;14150:3;14171:67;14235:2;14230:3;14171:67;:::i;:::-;14164:74;;14247:93;14336:3;14247:93;:::i;:::-;14365:2;14360:3;14356:12;14349:19;;14008:366;;;:::o;14380:419::-;14546:4;14584:2;14573:9;14569:18;14561:26;;14633:9;14627:4;14623:20;14619:1;14608:9;14604:17;14597:47;14661:131;14787:4;14661:131;:::i;:::-;14653:139;;14380:419;;;:::o;14805:240::-;14945:34;14941:1;14933:6;14929:14;14922:58;15014:23;15009:2;15001:6;14997:15;14990:48;14805:240;:::o;15051:366::-;15193:3;15214:67;15278:2;15273:3;15214:67;:::i;:::-;15207:74;;15290:93;15379:3;15290:93;:::i;:::-;15408:2;15403:3;15399:12;15392:19;;15051:366;;;:::o;15423:419::-;15589:4;15627:2;15616:9;15612:18;15604:26;;15676:9;15670:4;15666:20;15662:1;15651:9;15647:17;15640:47;15704:131;15830:4;15704:131;:::i;:::-;15696:139;;15423:419;;;:::o;15848:239::-;15988:34;15984:1;15976:6;15972:14;15965:58;16057:22;16052:2;16044:6;16040:15;16033:47;15848:239;:::o;16093:366::-;16235:3;16256:67;16320:2;16315:3;16256:67;:::i;:::-;16249:74;;16332:93;16421:3;16332:93;:::i;:::-;16450:2;16445:3;16441:12;16434:19;;16093:366;;;:::o;16465:419::-;16631:4;16669:2;16658:9;16654:18;16646:26;;16718:9;16712:4;16708:20;16704:1;16693:9;16689:17;16682:47;16746:131;16872:4;16746:131;:::i;:::-;16738:139;;16465:419;;;:::o;16890:225::-;17030:34;17026:1;17018:6;17014:14;17007:58;17099:8;17094:2;17086:6;17082:15;17075:33;16890:225;:::o;17121:366::-;17263:3;17284:67;17348:2;17343:3;17284:67;:::i;:::-;17277:74;;17360:93;17449:3;17360:93;:::i;:::-;17478:2;17473:3;17469:12;17462:19;;17121:366;;;:::o;17493:419::-;17659:4;17697:2;17686:9;17682:18;17674:26;;17746:9;17740:4;17736:20;17732:1;17721:9;17717:17;17710:47;17774:131;17900:4;17774:131;:::i;:::-;17766:139;;17493:419;;;:::o;17918:223::-;18058:34;18054:1;18046:6;18042:14;18035:58;18127:6;18122:2;18114:6;18110:15;18103:31;17918:223;:::o;18147:366::-;18289:3;18310:67;18374:2;18369:3;18310:67;:::i;:::-;18303:74;;18386:93;18475:3;18386:93;:::i;:::-;18504:2;18499:3;18495:12;18488:19;;18147:366;;;:::o;18519:419::-;18685:4;18723:2;18712:9;18708:18;18700:26;;18772:9;18766:4;18762:20;18758:1;18747:9;18743:17;18736:47;18800:131;18926:4;18800:131;:::i;:::-;18792:139;;18519:419;;;:::o;18944:221::-;19084:34;19080:1;19072:6;19068:14;19061:58;19153:4;19148:2;19140:6;19136:15;19129:29;18944:221;:::o;19171:366::-;19313:3;19334:67;19398:2;19393:3;19334:67;:::i;:::-;19327:74;;19410:93;19499:3;19410:93;:::i;:::-;19528:2;19523:3;19519:12;19512:19;;19171:366;;;:::o;19543:419::-;19709:4;19747:2;19736:9;19732:18;19724:26;;19796:9;19790:4;19786:20;19782:1;19771:9;19767:17;19760:47;19824:131;19950:4;19824:131;:::i;:::-;19816:139;;19543:419;;;:::o;19968:224::-;20108:34;20104:1;20096:6;20092:14;20085:58;20177:7;20172:2;20164:6;20160:15;20153:32;19968:224;:::o;20198:366::-;20340:3;20361:67;20425:2;20420:3;20361:67;:::i;:::-;20354:74;;20437:93;20526:3;20437:93;:::i;:::-;20555:2;20550:3;20546:12;20539:19;;20198:366;;;:::o;20570:419::-;20736:4;20774:2;20763:9;20759:18;20751:26;;20823:9;20817:4;20813:20;20809:1;20798:9;20794:17;20787:47;20851:131;20977:4;20851:131;:::i;:::-;20843:139;;20570:419;;;:::o;20995:222::-;21135:34;21131:1;21123:6;21119:14;21112:58;21204:5;21199:2;21191:6;21187:15;21180:30;20995:222;:::o;21223:366::-;21365:3;21386:67;21450:2;21445:3;21386:67;:::i;:::-;21379:74;;21462:93;21551:3;21462:93;:::i;:::-;21580:2;21575:3;21571:12;21564:19;;21223:366;;;:::o;21595:419::-;21761:4;21799:2;21788:9;21784:18;21776:26;;21848:9;21842:4;21838:20;21834:1;21823:9;21819:17;21812:47;21876:131;22002:4;21876:131;:::i;:::-;21868:139;;21595:419;;;:::o;22020:236::-;22160:34;22156:1;22148:6;22144:14;22137:58;22229:19;22224:2;22216:6;22212:15;22205:44;22020:236;:::o;22262:366::-;22404:3;22425:67;22489:2;22484:3;22425:67;:::i;:::-;22418:74;;22501:93;22590:3;22501:93;:::i;:::-;22619:2;22614:3;22610:12;22603:19;;22262:366;;;:::o;22634:419::-;22800:4;22838:2;22827:9;22823:18;22815:26;;22887:9;22881:4;22877:20;22873:1;22862:9;22858:17;22851:47;22915:131;23041:4;22915:131;:::i;:::-;22907:139;;22634:419;;;:::o;23059:172::-;23199:24;23195:1;23187:6;23183:14;23176:48;23059:172;:::o;23237:366::-;23379:3;23400:67;23464:2;23459:3;23400:67;:::i;:::-;23393:74;;23476:93;23565:3;23476:93;:::i;:::-;23594:2;23589:3;23585:12;23578:19;;23237:366;;;:::o;23609:419::-;23775:4;23813:2;23802:9;23798:18;23790:26;;23862:9;23856:4;23852:20;23848:1;23837:9;23833:17;23826:47;23890:131;24016:4;23890:131;:::i;:::-;23882:139;;23609:419;;;:::o;24034:297::-;24174:34;24170:1;24162:6;24158:14;24151:58;24243:34;24238:2;24230:6;24226:15;24219:59;24312:11;24307:2;24299:6;24295:15;24288:36;24034:297;:::o;24337:366::-;24479:3;24500:67;24564:2;24559:3;24500:67;:::i;:::-;24493:74;;24576:93;24665:3;24576:93;:::i;:::-;24694:2;24689:3;24685:12;24678:19;;24337:366;;;:::o;24709:419::-;24875:4;24913:2;24902:9;24898:18;24890:26;;24962:9;24956:4;24952:20;24948:1;24937:9;24933:17;24926:47;24990:131;25116:4;24990:131;:::i;:::-;24982:139;;24709:419;;;:::o;25134:240::-;25274:34;25270:1;25262:6;25258:14;25251:58;25343:23;25338:2;25330:6;25326:15;25319:48;25134:240;:::o;25380:366::-;25522:3;25543:67;25607:2;25602:3;25543:67;:::i;:::-;25536:74;;25619:93;25708:3;25619:93;:::i;:::-;25737:2;25732:3;25728:12;25721:19;;25380:366;;;:::o;25752:419::-;25918:4;25956:2;25945:9;25941:18;25933:26;;26005:9;25999:4;25995:20;25991:1;25980:9;25976:17;25969:47;26033:131;26159:4;26033:131;:::i;:::-;26025:139;;25752:419;;;:::o;26177:169::-;26317:21;26313:1;26305:6;26301:14;26294:45;26177:169;:::o;26352:366::-;26494:3;26515:67;26579:2;26574:3;26515:67;:::i;:::-;26508:74;;26591:93;26680:3;26591:93;:::i;:::-;26709:2;26704:3;26700:12;26693:19;;26352:366;;;:::o;26724:419::-;26890:4;26928:2;26917:9;26913:18;26905:26;;26977:9;26971:4;26967:20;26963:1;26952:9;26948:17;26941:47;27005:131;27131:4;27005:131;:::i;:::-;26997:139;;26724:419;;;:::o;27149:241::-;27289:34;27285:1;27277:6;27273:14;27266:58;27358:24;27353:2;27345:6;27341:15;27334:49;27149:241;:::o;27396:366::-;27538:3;27559:67;27623:2;27618:3;27559:67;:::i;:::-;27552:74;;27635:93;27724:3;27635:93;:::i;:::-;27753:2;27748:3;27744:12;27737:19;;27396:366;;;:::o;27768:419::-;27934:4;27972:2;27961:9;27957:18;27949:26;;28021:9;28015:4;28011:20;28007:1;27996:9;27992:17;27985:47;28049:131;28175:4;28049:131;:::i;:::-;28041:139;;27768:419;;;:::o;28193:194::-;28233:4;28253:20;28271:1;28253:20;:::i;:::-;28248:25;;28287:20;28305:1;28287:20;:::i;:::-;28282:25;;28331:1;28328;28324:9;28316:17;;28355:1;28349:4;28346:11;28343:37;;;28360:18;;:::i;:::-;28343:37;28193:194;;;;:::o;28393:177::-;28533:29;28529:1;28521:6;28517:14;28510:53;28393:177;:::o;28576:366::-;28718:3;28739:67;28803:2;28798:3;28739:67;:::i;:::-;28732:74;;28815:93;28904:3;28815:93;:::i;:::-;28933:2;28928:3;28924:12;28917:19;;28576:366;;;:::o;28948:419::-;29114:4;29152:2;29141:9;29137:18;29129:26;;29201:9;29195:4;29191:20;29187:1;29176:9;29172:17;29165:47;29229:131;29355:4;29229:131;:::i;:::-;29221:139;;28948:419;;;:::o;29373:147::-;29474:11;29511:3;29496:18;;29373:147;;;;:::o;29526:114::-;;:::o;29646:398::-;29805:3;29826:83;29907:1;29902:3;29826:83;:::i;:::-;29819:90;;29918:93;30007:3;29918:93;:::i;:::-;30036:1;30031:3;30027:11;30020:18;;29646:398;;;:::o;30050:379::-;30234:3;30256:147;30399:3;30256:147;:::i;:::-;30249:154;;30420:3;30413:10;;30050:379;;;:::o;30435:442::-;30584:4;30622:2;30611:9;30607:18;30599:26;;30635:71;30703:1;30692:9;30688:17;30679:6;30635:71;:::i;:::-;30716:72;30784:2;30773:9;30769:18;30760:6;30716:72;:::i;:::-;30798;30866:2;30855:9;30851:18;30842:6;30798:72;:::i;:::-;30435:442;;;;;;:::o;30883:220::-;31023:34;31019:1;31011:6;31007:14;31000:58;31092:3;31087:2;31079:6;31075:15;31068:28;30883:220;:::o;31109:366::-;31251:3;31272:67;31336:2;31331:3;31272:67;:::i;:::-;31265:74;;31348:93;31437:3;31348:93;:::i;:::-;31466:2;31461:3;31457:12;31450:19;;31109:366;;;:::o;31481:419::-;31647:4;31685:2;31674:9;31670:18;31662:26;;31734:9;31728:4;31724:20;31720:1;31709:9;31705:17;31698:47;31762:131;31888:4;31762:131;:::i;:::-;31754:139;;31481:419;;;:::o;31906:180::-;31954:77;31951:1;31944:88;32051:4;32048:1;32041:15;32075:4;32072:1;32065:15;32092:180;32140:77;32137:1;32130:88;32237:4;32234:1;32227:15;32261:4;32258:1;32251:15;32278:143;32335:5;32366:6;32360:13;32351:22;;32382:33;32409:5;32382:33;:::i;:::-;32278:143;;;;:::o;32427:351::-;32497:6;32546:2;32534:9;32525:7;32521:23;32517:32;32514:119;;;32552:79;;:::i;:::-;32514:119;32672:1;32697:64;32753:7;32744:6;32733:9;32729:22;32697:64;:::i;:::-;32687:74;;32643:128;32427:351;;;;:::o;32784:85::-;32829:7;32858:5;32847:16;;32784:85;;;:::o;32875:158::-;32933:9;32966:61;32984:42;32993:32;33019:5;32993:32;:::i;:::-;32984:42;:::i;:::-;32966:61;:::i;:::-;32953:74;;32875:158;;;:::o;33039:147::-;33134:45;33173:5;33134:45;:::i;:::-;33129:3;33122:58;33039:147;;:::o;33192:114::-;33259:6;33293:5;33287:12;33277:22;;33192:114;;;:::o;33312:184::-;33411:11;33445:6;33440:3;33433:19;33485:4;33480:3;33476:14;33461:29;;33312:184;;;;:::o;33502:132::-;33569:4;33592:3;33584:11;;33622:4;33617:3;33613:14;33605:22;;33502:132;;;:::o;33640:108::-;33717:24;33735:5;33717:24;:::i;:::-;33712:3;33705:37;33640:108;;:::o;33754:179::-;33823:10;33844:46;33886:3;33878:6;33844:46;:::i;:::-;33922:4;33917:3;33913:14;33899:28;;33754:179;;;;:::o;33939:113::-;34009:4;34041;34036:3;34032:14;34024:22;;33939:113;;;:::o;34088:732::-;34207:3;34236:54;34284:5;34236:54;:::i;:::-;34306:86;34385:6;34380:3;34306:86;:::i;:::-;34299:93;;34416:56;34466:5;34416:56;:::i;:::-;34495:7;34526:1;34511:284;34536:6;34533:1;34530:13;34511:284;;;34612:6;34606:13;34639:63;34698:3;34683:13;34639:63;:::i;:::-;34632:70;;34725:60;34778:6;34725:60;:::i;:::-;34715:70;;34571:224;34558:1;34555;34551:9;34546:14;;34511:284;;;34515:14;34811:3;34804:10;;34212:608;;;34088:732;;;;:::o;34826:831::-;35089:4;35127:3;35116:9;35112:19;35104:27;;35141:71;35209:1;35198:9;35194:17;35185:6;35141:71;:::i;:::-;35222:80;35298:2;35287:9;35283:18;35274:6;35222:80;:::i;:::-;35349:9;35343:4;35339:20;35334:2;35323:9;35319:18;35312:48;35377:108;35480:4;35471:6;35377:108;:::i;:::-;35369:116;;35495:72;35563:2;35552:9;35548:18;35539:6;35495:72;:::i;:::-;35577:73;35645:3;35634:9;35630:19;35621:6;35577:73;:::i;:::-;34826:831;;;;;;;;:::o;35663:807::-;35912:4;35950:3;35939:9;35935:19;35927:27;;35964:71;36032:1;36021:9;36017:17;36008:6;35964:71;:::i;:::-;36045:72;36113:2;36102:9;36098:18;36089:6;36045:72;:::i;:::-;36127:80;36203:2;36192:9;36188:18;36179:6;36127:80;:::i;:::-;36217;36293:2;36282:9;36278:18;36269:6;36217:80;:::i;:::-;36307:73;36375:3;36364:9;36360:19;36351:6;36307:73;:::i;:::-;36390;36458:3;36447:9;36443:19;36434:6;36390:73;:::i;:::-;35663:807;;;;;;;;;:::o;36476:143::-;36533:5;36564:6;36558:13;36549:22;;36580:33;36607:5;36580:33;:::i;:::-;36476:143;;;;:::o;36625:663::-;36713:6;36721;36729;36778:2;36766:9;36757:7;36753:23;36749:32;36746:119;;;36784:79;;:::i;:::-;36746:119;36904:1;36929:64;36985:7;36976:6;36965:9;36961:22;36929:64;:::i;:::-;36919:74;;36875:128;37042:2;37068:64;37124:7;37115:6;37104:9;37100:22;37068:64;:::i;:::-;37058:74;;37013:129;37181:2;37207:64;37263:7;37254:6;37243:9;37239:22;37207:64;:::i;:::-;37197:74;;37152:129;36625:663;;;;;:::o

Swarm Source

ipfs://d88cf4b3c059c7c3b0435c0c6de60b46aceedfe4782614bf1a438328a7a333ad
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.