ETH Price: $2,612.50 (+0.82%)

Token

ZeVoid (ZVOID)
 

Overview

Max Total Supply

7,000,000 ZVOID

Holders

347 (0.00%)

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1.000000000000010743 ZVOID

Value
$0.00
0x7a815a4620cfd20b6e93e695ae7007f1992ba832
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

We identify and solve the most important problems we see in the crypto economy using ZeMind. Every member of the hivemind that manages to conceptualize an idea that ends up on the roadmap is developed and starts generating revenue for the protocol, which will be rewarded gradually and consistently.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Zevoid

Compiler Version
v0.8.11+commit.d7f03943

Optimization Enabled:
Yes with 200 runs

Other Settings:
byzantium EvmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT

/**
ZVOID Team

Website: https://www.zevoid.io/
Telegram: https://t.me/ZeVoidPortal
Twitter: https://twitter.com/ZeVoidOfficial


Dr_0x1
Head of development
*/



pragma solidity >=0.4.22 <0.9.0;



interface IFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

// implementation: https://etherscan.io/address/0x48d118c9185e4dbafe7f3813f8f29ec8a6248359#code
// proxy: https://etherscan.io/address/0x48d118c9185e4dbafe7f3813f8f29ec8a6248359#code
interface ItrustSwap {
    function lockToken(
        address _tokenAddress,
        address _withdrawalAddress,
        uint256 _amount,
        uint256 _unlockTime,
        bool _mintNFT
    )external payable returns (uint256 _id);

    function transferLocks(uint256 _id, address _receiverAddress) external;
    function addTokenToFreeList(address token) external;
    function extendLockDuration(uint256 _id, uint256 _unlockTime) external;
    function getFeesInETH(address _tokenAddress) external view returns (uint256);
    function withdrawTokens(uint256 _id, uint256 _amount) external;

    function getDepositDetails(uint256 _id)view external returns (
        address _tokenAddress, 
        address _withdrawalAddress, 
        uint256 _tokenAmount, 
        uint256 _unlockTime, 
        bool _withdrawn, 
        uint256 _tokenId,
        bool _isNFT,
        uint256 _migratedLockDepositId,
        bool _isNFTMinted);
}

interface IPair {
    function allowance(address owner, address spender) external view returns (uint);
    function approve(address spender, uint value) external returns (bool);    
    function transfer(address to, uint256 amount) external returns (bool);
    function balanceOf(address owner) external view returns (uint);
    function getReserves() external view returns (uint112 _reserve0, uint112 _reserve1, uint32 _blockTimestampLast);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        ); 

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

    function getAmountsOut(uint amountIn, address[] memory path) external view returns (uint[] memory amounts);
    
}

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);

    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `from` to `to` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) external returns (bool);
}


contract ERC20 is Context, IERC20 {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string public name;
    string public symbol;
    uint8 public decimals;

    constructor(string memory name_, string memory symbol_) {
        name = name_;
        symbol = symbol_;
        decimals = 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 to, uint256 amount) public virtual override returns (bool) {}

    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) {
        address owner = _msgSender();
        _approve(owner, spender, amount);
        return true;
    }

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {}

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
        }
        _balances[to] += amount;

        emit Transfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, 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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }


}



contract Zevoid is ERC20 {

  struct Taxes { 
    uint256 lp_tax;
    uint256 devMarketing_tax; 
    uint256 ETH_gasfee_tax; 
    uint256 team_tax; 
    uint256 total; 
    //ecosystem 
    uint256 early_sell_tax; 
    uint256 deadblock_tax; 
    uint256 blacklist_tax; 
  }
  struct EarlyBuySellTracker {
    uint256 buy_blockNumber;
    uint256 sell_blockNumber;
  }

  mapping(address => EarlyBuySellTracker) first_actions_map;
  uint256 ebst_treshold = 60*60*24; //24h
  mapping(address => uint256) private team_members;
  
  struct Shares{
    uint256 share_team;
    uint256 share_developmentMarketing;
    uint256 share_Fees;
    uint256 share_LP;
  }
  Shares private shareObj;

  address[] private team_member_list;  
  address[] whitelist; 
  address[] blacklist; 
  address[] holders;

  uint256 private end_blockNr = 0;
  uint256 _unlockTime_in_UTC = 210 days; //7months
  uint256 public unlockTime_in_UTC_local;
  bool public trading_enabled = false;

  uint256 public lp_eth_balance;
  
  Taxes public buy_taxes = Taxes({
    lp_tax: 250, 
    devMarketing_tax: 240, 
    ETH_gasfee_tax: 10, 
    team_tax: 200, 
    total: (250 + 240 + 10 + 200),
    //
    early_sell_tax: 0, 
    deadblock_tax: 7300, 
    blacklist_tax: 7000 
  });

  Taxes public sell_taxes = Taxes({
    lp_tax: 250,
    devMarketing_tax: 240,
    ETH_gasfee_tax: 10,
    team_tax: 200,
    total: (250 + 240 + 10 + 200),
    //
    early_sell_tax: 1200, 
    deadblock_tax: 700, 
    blacklist_tax: 7000
  });


uint256 totalTokenAmount = 7 * (10 ** 6) * (10 ** 18);
uint256 initialSupply;
uint256 BASISPOINT = 10000;

uint256 public _maxWallet = (totalTokenAmount / 100); // 1%
uint256 public _maxTx = (totalTokenAmount * 50) / BASISPOINT; //0.5%

IRouter uniswapV2Router;
IPair public uniswapV2Pair;
ItrustSwap externLocker;
uint256[] locks_ids;
address public owner;
address public zeOracle_address;
address private developmentMarketing_address; 


constructor(
  address owner_0,
  address router_v2_address, 
  address externLocker_address,
  address developmentMarketing_address_,
  address zeOracle_address_ 
  ) 
  ERC20("ZeVoid", "ZVOID") 
  {
    //owner: multisig  
    owner = owner_0;
    
    initialSupply = ((totalTokenAmount * 80) / 100);
    
    _mint(address(this), initialSupply); //80%
    _mint(owner, (totalTokenAmount - initialSupply)); //20% for CEX

    zeOracle_address = zeOracle_address_;
    developmentMarketing_address = developmentMarketing_address_;

    uniswapV2Router = IRouter(router_v2_address); 
    address _pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

    uniswapV2Pair = IPair(_pair);
    externLocker = ItrustSwap(externLocker_address);
        
    whitelist.push(address(this));
    whitelist.push(owner);
    whitelist.push(zeOracle_address);
    //
    whitelist.push(router_v2_address);
    whitelist.push(_pair);
    whitelist.push(externLocker_address);


    //team members
    //
    team_member_list.push(0x13D47263B1B770AbD441AEAb67e5e00EDA11B1C5);    
    team_members[0x13D47263B1B770AbD441AEAb67e5e00EDA11B1C5] = 2000; 
    //
    team_member_list.push(0xA795a19fB3797466517FDC7804fdB9E87DAeDfd4);    
    team_members[0xA795a19fB3797466517FDC7804fdB9E87DAeDfd4] = 2000; 
    //
    team_member_list.push(0x11F184dFA987973933A5150531e5BeA2882b0687);    
    team_members[0x11F184dFA987973933A5150531e5BeA2882b0687] = 2000; 
    //
    team_member_list.push(0x9A22519df3fac8b3829f8F3150ae2D6C3A6b809D);    
    team_members[0x9A22519df3fac8b3829f8F3150ae2D6C3A6b809D] = 2000; 
    //
    team_member_list.push(0xDeE2DE3F2532791B5F58c5Ff0EE834586930cf99);    
    team_members[0xDeE2DE3F2532791B5F58c5Ff0EE834586930cf99] = 2000; 
    //


    //
    shareObj = Shares({
        share_team: 3000,
        share_developmentMarketing: 3400,
        share_Fees: 100,
        share_LP: 3500
    });
}



function plock(uint256 ethAmount) payable external onlyOwner {

  if((msg.value <= externLocker.getFeesInETH(address(uniswapV2Pair))))revert('Not enough liql!');

  (bool sent,) = payable(address(this)).call{value: ethAmount}("");
  if(sent == true){

    if(initialSupply > 0 && ethAmount > 0){
      addLiquidity(address(this), initialSupply, ethAmount);
      lock_LP_Tokens();
    }
  }else{
    revert('sending ETH in plock: fail');
  }
}

modifier onlyOwner(){
  require(owner == msg.sender, 'Only Owner!');
  _;
}

modifier onlyOwnerZeOracle(){
  require(zeOracle_address == msg.sender || owner == msg.sender, 'Only owner or zeOracle!');
  _;
}

modifier tradingAutoDisabled(){
  bool before_trading_enabled = trading_enabled; 
  trading_enabled = false;
  _;
  trading_enabled = before_trading_enabled;
}


function set_deadblock_tax(uint256 new_deadblock_buy_tax, uint256 new_deadblock_sell_tax) onlyOwner external{
  buy_taxes.deadblock_tax = new_deadblock_buy_tax;
  sell_taxes.deadblock_tax = new_deadblock_sell_tax;
}


function set_unlockTime_in_UTC(uint256 new_unlockTime_in_UTC) onlyOwner external{
  _unlockTime_in_UTC = new_unlockTime_in_UTC;
}

function set_early_sell_tax(uint256 new_early_sell_tax) onlyOwner external{
  sell_taxes.early_sell_tax = new_early_sell_tax;
}


function set_blacklist_tax(uint256 new_blacklist_buy_tax, uint256 new_blacklist_sell_tax) onlyOwner external{
  buy_taxes.blacklist_tax = new_blacklist_buy_tax;
  sell_taxes.blacklist_tax = new_blacklist_sell_tax;
}


function set_buy_taxes(
  uint256 new_lp_tax, 
  uint256 new_devMarketing_tax,
  uint256 new_ETH_gasfee_tax,
  uint256 new_team_tax
  ) onlyOwner external{
  buy_taxes.lp_tax = new_lp_tax;
  buy_taxes.devMarketing_tax = new_devMarketing_tax;
  buy_taxes.ETH_gasfee_tax = new_ETH_gasfee_tax;
  buy_taxes.team_tax = new_team_tax;
  buy_taxes.total = buy_taxes.lp_tax + buy_taxes.devMarketing_tax + buy_taxes.ETH_gasfee_tax + buy_taxes.team_tax;
}


function set_sell_taxes(  
  uint256 new_lp_tax, 
  uint256 new_devMarketing_tax,
  uint256 new_ETH_gasfee_tax,
  uint256 new_team_tax
) onlyOwner external{
  sell_taxes.lp_tax = new_lp_tax;
  sell_taxes.devMarketing_tax = new_devMarketing_tax;
  sell_taxes.ETH_gasfee_tax = new_ETH_gasfee_tax;
  sell_taxes.team_tax = new_team_tax;
  sell_taxes.total = sell_taxes.lp_tax + sell_taxes.devMarketing_tax + sell_taxes.ETH_gasfee_tax + sell_taxes.team_tax;
}





function set_owner(address new_owner) onlyOwner external{
  add_whitelist(new_owner);
  owner = new_owner;
}

function set_zeOracle_address(address new_zeOracle_address) onlyOwner external{
  zeOracle_address = new_zeOracle_address;
}


function set_maxTx_maxWallet(uint256 new_maxWallet_in_ZVOID, uint256 new__maxTx_in_ZVOID) onlyOwner external{  
  _maxWallet = new_maxWallet_in_ZVOID; 
  _maxTx = new__maxTx_in_ZVOID; 
}


function set_ebst_treshold(uint256 new_ebst_treshold) onlyOwner external{
  ebst_treshold = new_ebst_treshold;
}

function set_trading_enabled(bool new_trading_enabled, uint256 nBlock) onlyOwner external{
  trading_enabled = new_trading_enabled;
  if(end_blockNr == 0) end_blockNr = (block.number + nBlock); 
}

function is_team_member(address team_member) public view returns(bool, uint256) {
    for(uint256 i=0; i < team_member_list.length; i++){
        if(team_member_list[i] == team_member){
            return (true, i);
        }
    }
    return (false, 0);
}

function team_shares_correct() view private returns(bool) {
    uint256 total_shares = 0;
    for(uint256 i=0; i < team_member_list.length; i++){
        total_shares += team_members[team_member_list[i]];
    }
    //
    if((total_shares) <= BASISPOINT){
        return true;
    }
    return false;
}

function add_team_member(address team_member, uint256 share_perc_in_BASISPOINT) onlyOwner external returns(bool) {
    (bool is_tm,) = is_team_member(team_member);
    if(is_tm == true)return false;
    //
    team_member_list.push(team_member);    
    team_members[team_member] = share_perc_in_BASISPOINT; 
    //
    if(team_shares_correct()==false)revert('Total share is greater than 100%.');
    //
    return true;
}

function delete_team_member(address team_member) onlyOwner external returns(bool){    
    (bool is_tm, uint256 i) = is_team_member(team_member);
    if(is_tm == true){
        delete team_member_list[i];
        delete team_members[team_member];
        return true;
    } 
  return false;
}

function get_team_member_list() public view returns(address[] memory) {
    return team_member_list;
}

function set_team_member(address old_team_member, address new_team_member, uint256 share_perc_in_BASISPOINT) onlyOwner external returns(bool){
    (bool is_tm, uint256 i) = is_team_member(old_team_member);
    if(is_tm == true){
        team_member_list[i] = new_team_member;
        //
        delete team_members[old_team_member];
        team_members[new_team_member] = share_perc_in_BASISPOINT;
        //
        if(team_shares_correct()==false)revert('Total share is greater than 100%.');
        //
        return true;
    }
    return false;
}


function is_whitelisted(address user) public view returns(bool) {
  for(uint256 i=0; i<whitelist.length; i++){
    if(whitelist[i] == user)return true;
  }
  return false;
}

function is_blacklisted(address user) public view returns(bool) {
  for(uint256 i=0; i<blacklist.length; i++){
    if(blacklist[i] == user)return true;
  }
  return false;
}


function get_holders() public view returns(address[] memory){
  return holders;
}


function add_or_remove_holder(address user) private returns(uint256) {
  uint256 amount = balanceOf(user);
  
  for(uint256 i=0; i<holders.length; i++){
    if(holders[i] == user && amount == 0 || holders[i] == address(0)){
      delete holders[i];
      return 2;
    }
  }
  
  if(user != address(0) && amount > 0){
    holders.push(user); 
    return 1;
  }
  
  return 0;
}


function add_whitelist(address user) onlyOwner public returns(address){
  for(uint256 i=0; i < whitelist.length; i++){
    if(whitelist[i] == user){
      return user;
    }
  }
  whitelist.push(user);
  return user; 
}

function remove_whitelist(address user) external onlyOwner returns(address){
  for(uint256 i=0; i<whitelist.length; i++){
    if(whitelist[i] == user){
      delete whitelist[i];
      return user;
    }
  }
  return user;
}

function add_blacklist(address user) external onlyOwner returns(address){
  for(uint256 i=0; i<blacklist.length; i++){
    if(blacklist[i] == user){
      return user;
    }
  }
  blacklist.push(user);
  return user;  
}

function remove_blacklist(address user) external onlyOwner returns(address){
  for(uint256 i=0; i<blacklist.length; i++){
    if(blacklist[i] == user){
      delete blacklist[i];
      return user;
    }
  }
  return user;
}


  function transferFrom(
      address from,
      address to,
      uint256 amount
  ) public virtual override returns (bool) {    
    require( 
      (is_whitelisted(from) && is_whitelisted(to)) || 
      trading_enabled == true,
      'Paused!'
    );

    address spender = _msgSender(); 
    uint256 tax = 0;
    
    if(to == address(uniswapV2Pair) && from != address(uniswapV2Router)){
      tax = taxnomics_sell(from); 
    }
    
    _spendAllowance(from, spender, amount);

    if(tax > 0){
      uint256 tax_amount = (amount * tax) / BASISPOINT; 
      amount -= tax_amount;
      if(tax_amount > 0)_transfer(from, address(this), tax_amount);
    }
    //
    _transfer(from, to, amount);
    
    //
    add_or_remove_holder(to);
    add_or_remove_holder(from);
    //

    if(to == address(uniswapV2Pair) && from != address(uniswapV2Router)){
      if(amount > _maxTx && is_whitelisted(from)==false)revert('_maxWallet or _maxTx reached!');
    }
    
    return true;
  }


  function transfer(address to, uint256 amount) public virtual override returns (bool) {  
    address owner_ = _msgSender();
    require( 
      (is_whitelisted(owner_) && is_whitelisted(to)) || 
      trading_enabled == true,
      'Paused!'
    );
    
    uint256 tax = 0;
    //
    if(owner_ == address(uniswapV2Pair) && to != address(uniswapV2Router)){
      first_actions_map[to] = EarlyBuySellTracker({buy_blockNumber: block.timestamp, sell_blockNumber: (block.timestamp + ebst_treshold)});
      tax = taxnomics_buy(to);
    }
    //
    if(tax > 0){
      uint256 tax_amount = (amount * tax) / BASISPOINT; 
      amount -= tax_amount;
      if(tax_amount > 0)_transfer(owner_, address(this), tax_amount);
    }
    //
    _transfer(owner_, to, amount);
    //
    add_or_remove_holder(to);
    add_or_remove_holder(owner_);
    //

    if(owner_ == address(uniswapV2Pair) && to != address(uniswapV2Router)){
      if(maxTx_maxWallet_reached(to, amount)==true)revert('_maxWallet or _maxTx reached!');
    }
    
    return true;
  }
  

  function maxTx_maxWallet_reached(address user, uint256 amount) private view returns(bool){    
    if((balanceOf(user) > _maxWallet && is_whitelisted(user)==false) || 
    (amount > _maxTx && is_whitelisted(user)==false)) return true;
    return false;
  }

  
  function taxnomics_buy(address wallet) private view returns(uint256) {    
    uint256 tax = buy_taxes.total; 

    if(is_whitelisted(wallet)){
      tax = 0;

    }else if(is_blacklisted(wallet)){   
      tax = buy_taxes.blacklist_tax;

    }
    else if(block.number > 0 && end_blockNr > 0 && block.number <= end_blockNr){
      tax = buy_taxes.deadblock_tax;
    }

    return tax;
  }



  function taxnomics_sell(address wallet) private view returns(uint256) {    
    uint256 tax = sell_taxes.total; 
    
    if(is_whitelisted(wallet)){
      tax = 0;

    }else if(is_blacklisted(wallet)){   
      tax = sell_taxes.blacklist_tax;

    }else if(block.number > 0 && end_blockNr > 0 && block.number <= end_blockNr){
      tax = sell_taxes.deadblock_tax;
      
    }else if(
      block.timestamp >= first_actions_map[wallet].buy_blockNumber &&
      block.timestamp <= first_actions_map[wallet].sell_blockNumber){
      tax = sell_taxes.early_sell_tax;
    }

    return tax;
  }


  function addLiquidity(address to, uint256 tokenAmount, uint256 ethAmount) private returns(uint256) {
    _approve(address(this), address(uniswapV2Router), tokenAmount);
    (
      ,
      ,
      uint256 liquidity
    ) = uniswapV2Router.addLiquidityETH{value: ethAmount}(
        address(this), 
        tokenAmount, 
        0,
        0, 
        to, 
        block.timestamp + 360 
    );
    return liquidity;
  }


  function swapTokensForETH(address to, uint256 tokenAmount) private {
    address[] memory path = new address[](2);
    path[0] = address(this);
    path[1] = uniswapV2Router.WETH();

    _approve(address(this), address(uniswapV2Router), tokenAmount);

    uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
      tokenAmount, 
      0, 
      path, 
      to,
      block.timestamp + 360
    );
  }


  function release_all(uint256 chart_friendly_release_token_amount) external onlyOwnerZeOracle {
    if((chart_friendly_release_token_amount == 0) && (balanceOf(address(this)) < chart_friendly_release_token_amount))revert('release_all() error');

    address msgSender = address(this);
    uint256 bal_before = msgSender.balance;
    swapTokensForETH(msgSender, chart_friendly_release_token_amount);
    uint256 ethBalance = msgSender.balance - bal_before;
    
    if(msgSender.balance < bal_before)revert('send ethBalance: fail');
    //
    release_team_tax(ethBalance);
    //
    release_ETH(zeOracle_address, ethBalance, shareObj.share_Fees);

    release_ETH(developmentMarketing_address, ethBalance, shareObj.share_developmentMarketing);
    //  
    // //LP balance 
    lp_eth_balance += (ethBalance * shareObj.share_LP) / BASISPOINT;
  }


  function release_team_tax(uint256 ethBalance) private tradingAutoDisabled{

    uint256 amount = (ethBalance * shareObj.share_team) / BASISPOINT;
    
    for(uint256 i=0; i < team_member_list.length; i++){
      address to = team_member_list[i];
      uint256 ethAmount = (amount * team_members[to]) / (BASISPOINT);
      if(ethAmount > 0){
        (bool sent,) = payable(to).call{value: ethAmount}("");
        if(sent == false)revert('send ether: fail');
      }
      ethAmount = 0;
    }
  }


  function release_ETH(address to, uint256 ethBalance, uint256 shares) 
  private tradingAutoDisabled returns(bool) {
    uint256 ethAmount = (ethBalance * shares) / BASISPOINT;

    if(ethAmount > 0){
      (bool sent,) = payable(to).call{value: ethAmount}("");
      if(sent == false)revert('send ethAmount: fail');
      ethAmount = 0;
      return true;
    }else{
      return false;
    }
  }


function pool(uint256 pool_ethAmount) external onlyOwnerZeOracle tradingAutoDisabled{

  if(lp_eth_balance == 0 || pool_ethAmount == 0)revert('cannot send 0!');
  
  address msgSender = msg.sender;
  uint256 ethAmount = pool_ethAmount / 2;
  uint256 tokenAmount_before = balanceOf(msgSender);
  //
  address[] memory path = new address[](2);
  path[0] = uniswapV2Router.WETH();
  path[1] = address(this);
  
  uniswapV2Router.swapExactETHForTokensSupportingFeeOnTransferTokens{
      value: ethAmount
    }(
    0,
    path,
    msgSender,
    block.timestamp + (300)
  );
  
  uint256 tokenAmount_after = balanceOf(msgSender) - tokenAmount_before;
  uint256 b_balance = balanceOf(address(this));
  _transfer(msgSender, address(this), tokenAmount_after);
  uint256 a_balance = balanceOf(address(this)) - b_balance;

  if(a_balance != tokenAmount_after)revert('Error: while pooling');
  
  addLiquidity(address(this), tokenAmount_after, ethAmount);
  lp_eth_balance -= pool_ethAmount;
}


function get_lock_ids() public view returns(uint256[] memory) {
  return locks_ids;
} 


function lock_LP_Tokens() private {
  uint256 _amount = uniswapV2Pair.balanceOf(address(this));
  bool allowanceAmount = uniswapV2Pair.approve(address(externLocker), _amount); 

  if(allowanceAmount == true){
    uint256 ethAmount = externLocker.getFeesInETH(address(uniswapV2Pair));  
    
    uint256 endTime = _unlockTime_in_UTC + block.timestamp;
    unlockTime_in_UTC_local = endTime;
    uint256 externLocker_id = externLocker.lockToken{value: ethAmount}(address(uniswapV2Pair), address(this), _amount, endTime, false);

    locks_ids.push(externLocker_id); 

  }else{
    revert('approve in lock_LP_Tokens: fail');
  }
}


function extendLockDuration() external onlyOwnerZeOracle{
  for(uint256 i=0; i<locks_ids.length; i++){
    uint256 endTime = _unlockTime_in_UTC + block.timestamp;
    unlockTime_in_UTC_local = endTime;
    externLocker.extendLockDuration(locks_ids[i], endTime);
  }
}


function get_lp_tokens() public onlyOwner {
  if(block.timestamp < unlockTime_in_UTC_local)revert('lp tokens locked.');
  //
  for(uint256 i=0; i<locks_ids.length; i++){
    (, , uint256 _tokenAmount, , , , , , ) = externLocker.getDepositDetails(locks_ids[i]);
    externLocker.withdrawTokens(locks_ids[i], _tokenAmount);
  }
  //
  uint256 lpTokens = uniswapV2Pair.balanceOf(address(this));
  if(lpTokens > 0)uniswapV2Pair.transfer(owner, lpTokens);
}
 

function get_contractsETH(address newContract) public onlyOwner returns(bool){  
  uint256 ethAmount2 = address(this).balance;
  if(ethAmount2 > 0){
    (bool sent,) = payable(newContract).call{value: ethAmount2}("");
    return sent;
  }
  return false;
}
 

function ETH_migration(address newContract) external onlyOwner returns(bool) {
  // 
  get_lp_tokens(); 
  //
  uint256 lpTokens = uniswapV2Pair.balanceOf(address(this));
  bool approved = uniswapV2Pair.approve(address(uniswapV2Router), lpTokens);
  bool res = false;
  //
  if(lpTokens > 0 && approved==true){
    uint256 ethAmount1 = uniswapV2Router.removeLiquidityETHSupportingFeeOnTransferTokens(
      address(uniswapV2Pair),
      lpTokens,
      0,
      0,
      newContract,
      (block.timestamp + 360)
    );
    if(ethAmount1 > 0) res = true;
  }
  //
  if(get_contractsETH(newContract) ==true) res=true;
  return res;
}

  
  receive() external payable {}
  fallback() external payable{
    revert('fallback()');
  }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"owner_0","type":"address"},{"internalType":"address","name":"router_v2_address","type":"address"},{"internalType":"address","name":"externLocker_address","type":"address"},{"internalType":"address","name":"developmentMarketing_address_","type":"address"},{"internalType":"address","name":"zeOracle_address_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"stateMutability":"payable","type":"fallback"},{"inputs":[{"internalType":"address","name":"newContract","type":"address"}],"name":"ETH_migration","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"add_blacklist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"team_member","type":"address"},{"internalType":"uint256","name":"share_perc_in_BASISPOINT","type":"uint256"}],"name":"add_team_member","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"add_whitelist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_taxes","outputs":[{"internalType":"uint256","name":"lp_tax","type":"uint256"},{"internalType":"uint256","name":"devMarketing_tax","type":"uint256"},{"internalType":"uint256","name":"ETH_gasfee_tax","type":"uint256"},{"internalType":"uint256","name":"team_tax","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"early_sell_tax","type":"uint256"},{"internalType":"uint256","name":"deadblock_tax","type":"uint256"},{"internalType":"uint256","name":"blacklist_tax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"team_member","type":"address"}],"name":"delete_team_member","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"extendLockDuration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newContract","type":"address"}],"name":"get_contractsETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get_holders","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"get_lock_ids","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"get_lp_tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"get_team_member_list","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"is_blacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"team_member","type":"address"}],"name":"is_team_member","outputs":[{"internalType":"bool","name":"","type":"bool"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"is_whitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lp_eth_balance","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":[{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"plock","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pool_ethAmount","type":"uint256"}],"name":"pool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"chart_friendly_release_token_amount","type":"uint256"}],"name":"release_all","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"remove_blacklist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"remove_whitelist","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sell_taxes","outputs":[{"internalType":"uint256","name":"lp_tax","type":"uint256"},{"internalType":"uint256","name":"devMarketing_tax","type":"uint256"},{"internalType":"uint256","name":"ETH_gasfee_tax","type":"uint256"},{"internalType":"uint256","name":"team_tax","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"},{"internalType":"uint256","name":"early_sell_tax","type":"uint256"},{"internalType":"uint256","name":"deadblock_tax","type":"uint256"},{"internalType":"uint256","name":"blacklist_tax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_blacklist_buy_tax","type":"uint256"},{"internalType":"uint256","name":"new_blacklist_sell_tax","type":"uint256"}],"name":"set_blacklist_tax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_lp_tax","type":"uint256"},{"internalType":"uint256","name":"new_devMarketing_tax","type":"uint256"},{"internalType":"uint256","name":"new_ETH_gasfee_tax","type":"uint256"},{"internalType":"uint256","name":"new_team_tax","type":"uint256"}],"name":"set_buy_taxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_deadblock_buy_tax","type":"uint256"},{"internalType":"uint256","name":"new_deadblock_sell_tax","type":"uint256"}],"name":"set_deadblock_tax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_early_sell_tax","type":"uint256"}],"name":"set_early_sell_tax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_ebst_treshold","type":"uint256"}],"name":"set_ebst_treshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_maxWallet_in_ZVOID","type":"uint256"},{"internalType":"uint256","name":"new__maxTx_in_ZVOID","type":"uint256"}],"name":"set_maxTx_maxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_owner","type":"address"}],"name":"set_owner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_lp_tax","type":"uint256"},{"internalType":"uint256","name":"new_devMarketing_tax","type":"uint256"},{"internalType":"uint256","name":"new_ETH_gasfee_tax","type":"uint256"},{"internalType":"uint256","name":"new_team_tax","type":"uint256"}],"name":"set_sell_taxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"old_team_member","type":"address"},{"internalType":"address","name":"new_team_member","type":"address"},{"internalType":"uint256","name":"share_perc_in_BASISPOINT","type":"uint256"}],"name":"set_team_member","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"new_trading_enabled","type":"bool"},{"internalType":"uint256","name":"nBlock","type":"uint256"}],"name":"set_trading_enabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_unlockTime_in_UTC","type":"uint256"}],"name":"set_unlockTime_in_UTC","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"new_zeOracle_address","type":"address"}],"name":"set_zeOracle_address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trading_enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"contract IPair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlockTime_in_UTC_local","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"zeOracle_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6201518060075560006011819055630114db006012556014805460ff1916905560fa608081905260f060a0819052600a60c081905260c860e08190526102bc610100819052610120869052611c84610140819052611b586101608190526016879055601786905560188590556019849055601a839055601b97909755601c55601d8690556102806040526101808590526101a08490526101c08390526101e08290526102008190526104b0610220819052610240829052610260879052601e95909555601f9390935560209190915560215560228190556023919091556024556025556a05ca4ec2a79a7f670000006026819055612710602855620001079060649062000905565b6029556028546026546200011d90603262000941565b62000129919062000905565b602a553480156200013957600080fd5b5060405162004697380380620046978339810160408190526200015c9162000980565b604080518082018252600681527f5a65566f6964000000000000000000000000000000000000000000000000000060208083019182528351808501909452600584527f5a564f4944000000000000000000000000000000000000000000000000000000908401528151919291620001d69160039162000830565b508051620001ec90600490602084019062000830565b50506005805460ff1916601217905550602f8054600160a060020a038716600160a060020a03199091161790556026546064906200022c90605062000941565b62000238919062000905565b6027819055620002539030906401000000006200072e810204565b602f546027546026546200028592600160a060020a0316916200027691620009f0565b6401000000006200072e810204565b60308054600160a060020a03808416600160a060020a03199283161790925560318054858416908316179055602b80549287169290911682179055604080517fc45a015500000000000000000000000000000000000000000000000000000000815290516000929163c45a01559160048083019260209291908290030181865afa15801562000318573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200033e919062000a0a565b600160a060020a031663c9c6539630602b60009054906101000a9004600160a060020a0316600160a060020a031663ad5c46486040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381865afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e3919062000a0a565b6040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a039283166004820152911660248201526044016020604051808303816000875af115801562000448573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200046e919062000a0a565b602c8054600160a060020a03928316600160a060020a03199182168117909255602d805497841697821688179055600e8054600181810183557fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd9182018054851630179055602f54835480830185558301805486169188169190911790556030548354808301855583018054861691881691909117905582548082018455820180549b9096169a84169a909a179094558054808a01825584018054831690931790925581548089019092559101805482169095179094555050600d805480850182557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5908101805485167313d47263b1b770abd441aeab67e5e00eda11b1c5179055600860209081526107d07f37f00680519ff6be8c1773f413abe057c277658ac80fd3ecd92a928210bce9cd8190558354808801855583018054871673a795a19fb3797466517fdc7804fdb9e87daedfd41790557f2216660807e7cfd987509acf094e790695822f775aa0f5ecae19652cc4c45c2c819055835480880185558301805487167311f184dfa987973933a5150531e5bea2882b06871790557faec55002eccee980a07fda0c8a0c71cfba24c894c328b93e39c2e2019a848d1581905583548088018555830180548716739a22519df3fac8b3829f8f3150ae2d6c3a6b809d1790557f4382d1b297edc9b8e9bbc09463164261eb567d7d62c27c67a045e1f1b70a8bca81905583549687019093559401805490931673dee2de3f2532791b5f58c5ff0ee834586930cf99908117909355600092909252507fb5847a23bd0d9e2cd9d49a389644491e2594194d8516923d87eec99a7e07627a5560408051608081018252610bb8808252610d489382018490526064928201839052610dac6060909201829052600955600a92909255600b55600c555062000aa0565b600160a060020a038216620007a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620007b7919062000a2f565b9091555050600160a060020a03821660009081526020819052604081208054839290620007e690849062000a2f565b9091555050604051818152600160a060020a038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b8280546200083e9062000a4a565b90600052602060002090601f016020900481019282620008625760008555620008ad565b82601f106200087d57805160ff1916838001178555620008ad565b82800160010185558215620008ad579182015b82811115620008ad57825182559160200191906001019062000890565b50620008bb929150620008bf565b5090565b5b80821115620008bb5760008155600101620008c0565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000826200093c577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008160001904831182151516156200095e576200095e620008d6565b500290565b8051600160a060020a03811681146200097b57600080fd5b919050565b600080600080600060a086880312156200099957600080fd5b620009a48662000963565b9450620009b46020870162000963565b9350620009c46040870162000963565b9250620009d46060870162000963565b9150620009e46080870162000963565b90509295509295909350565b60008282101562000a055762000a05620008d6565b500390565b60006020828403121562000a1d57600080fd5b62000a288262000963565b9392505050565b6000821982111562000a455762000a45620008d6565b500190565b60028104600182168062000a5f57607f821691505b6020821081141562000a9a577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b613be78062000ab06000396000f3fe6080604052600436106102d15760003560e060020a900480637830b07211610179578063c1c4f03a116100e0578063dd62ed3e11610099578063e943100511610073578063e94310051461096e578063e9e55cf81461098e578063fd3f3b31146109a3578063fe313112146109c3576102d8565b8063dd62ed3e146108e8578063e41d3fa01461092e578063e8c61e191461094e576102d8565b8063c1c4f03a14610831578063c52cacaf14610851578063c7b722d414610871578063c9c602b414610891578063d5b09e26146108b3578063d77a8b40146108d3576102d8565b806395d89b411161013257806395d89b41146107905780639aab1f0c146107a5578063a9059cbb146107bb578063ac22a378146107db578063b51be5a2146107fb578063beb08cb61461081b576102d8565b80637830b072146106d857806378ff19e2146106ee5780637c418700146107255780637cb97b2b1461073a57806382247ec01461075a5780638da5cb5b14610770576102d8565b8063331e450a1161023857806353ec7ae8116101f15780635a6217be116101cb5780635a6217be1461065857806370a0823114610678578063779ee628146106985780637812dac3146106b8576102d8565b806353ec7ae8146105f857806356863e8d146106185780635950722714610638576102d8565b8063331e450a146105205780633d6c6dc41461053a5780634051d41e1461056d57806344d6cd12146105a557806348734774146105c557806349bd5a5e146105d8576102d8565b80631fe9ec771161028a5780631fe9ec771461045257806323b872dd1461047257806326577e3d146104925780632abf4b0e146104b45780632e07700a146104d4578063313ce567146104f4576102d8565b806306fdde0314610328578063095ea7b3146103535780631794e95a1461038357806318160ddd146103a35780631a6b71bf146103c25780631d1c1a59146103e4576102d8565b366102d857005b60405160e560020a62461bcd02815260206004820152600a60248201527f66616c6c6261636b28290000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561033457600080fd5b5061033d6109e3565b60405161034a91906135bd565b60405180910390f35b34801561035f57600080fd5b5061037361036e366004613627565b610a71565b604051901515815260200161034a565b34801561038f57600080fd5b5061037361039e366004613653565b610a8b565b3480156103af57600080fd5b506002545b60405190815260200161034a565b3480156103ce57600080fd5b506103d7610af5565b60405161034a91906136b4565b3480156103f057600080fd5b50601e54601f54602054602154602254602354602454602554610417979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161034a565b34801561045e57600080fd5b5061037361046d366004613653565b610b57565b34801561047e57600080fd5b5061037361048d3660046136c7565b610d8a565b34801561049e57600080fd5b506104b26104ad366004613708565b610f57565b005b3480156104c057600080fd5b506104b26104cf366004613708565b610f89565b3480156104e057600080fd5b506104b26104ef366004613721565b611129565b34801561050057600080fd5b5060055461050e9060ff1681565b60405160ff909116815260200161034a565b34801561052c57600080fd5b506014546103739060ff1681565b34801561054657600080fd5b50601654601754601854601954601a54601b54601c54601d54610417979695949392919088565b34801561057957600080fd5b5061058d610588366004613653565b611193565b604051600160a060020a03909116815260200161034a565b3480156105b157600080fd5b506103736105c0366004613627565b611254565b6104b26105d3366004613708565b611328565b3480156105e457600080fd5b50602c5461058d90600160a060020a031681565b34801561060457600080fd5b506104b2610613366004613708565b611502565b34801561062457600080fd5b506104b2610633366004613753565b611534565b34801561064457600080fd5b506104b2610653366004613783565b61156c565b34801561066457600080fd5b506104b2610673366004613708565b6115bf565b34801561068457600080fd5b506103b4610693366004613653565b6115f1565b3480156106a457600080fd5b506103736106b3366004613653565b61160c565b3480156106c457600080fd5b5061058d6106d3366004613653565b61166d565b3480156106e457600080fd5b506103b4602a5481565b3480156106fa57600080fd5b5061070e610709366004613653565b61174b565b60408051921515835260208301919091520161034a565b34801561073157600080fd5b506104b26117bc565b34801561074657600080fd5b506104b2610755366004613653565b6118cb565b34801561076657600080fd5b506103b460295481565b34801561077c57600080fd5b50602f5461058d90600160a060020a031681565b34801561079c57600080fd5b5061033d611924565b3480156107b157600080fd5b506103b460155481565b3480156107c757600080fd5b506103736107d6366004613627565b611931565b3480156107e757600080fd5b506104b26107f6366004613721565b611b30565b34801561080757600080fd5b506103736108163660046136c7565b611b9a565b34801561082757600080fd5b506103b460135481565b34801561083d57600080fd5b5061037361084c366004613653565b611c7a565b34801561085d57600080fd5b506104b261086c366004613753565b611d1f565b34801561087d57600080fd5b5061037361088c366004613653565b611d57565b34801561089d57600080fd5b506108a6611dee565b60405161034a91906137a1565b3480156108bf57600080fd5b5061058d6108ce366004613653565b611e45565b3480156108df57600080fd5b506103d7611edf565b3480156108f457600080fd5b506103b46109033660046137e5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b34801561093a57600080fd5b506104b2610949366004613753565b611f3f565b34801561095a57600080fd5b5061058d610969366004613653565b611f77565b34801561097a57600080fd5b506104b2610989366004613653565b612055565b34801561099a57600080fd5b506104b26120a4565b3480156109af57600080fd5b5060305461058d90600160a060020a031681565b3480156109cf57600080fd5b506104b26109de366004613708565b6123a8565b600380546109f09061381e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1c9061381e565b8015610a695780601f10610a3e57610100808354040283529160200191610a69565b820191906000526020600020905b815481529060010190602001808311610a4c57829003601f168201915b505050505081565b600033610a7f8185856126c4565b60019150505b92915050565b6000805b600f54811015610aec5782600160a060020a0316600f8281548110610ab657610ab661385c565b600091825260209091200154600160a060020a03161415610ada5750600192915050565b80610ae48161388e565b915050610a8f565b50600092915050565b60606010805480602002602001604051908101604052809291908181526020018280548015610b4d57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b2f575b5050505050905090565b602f54600090600160a060020a03163314610b875760405160e560020a62461bcd02815260040161031f906138a9565b610b8f6120a4565b602c546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091600160a060020a0316906370a0823190602401602060405180830381865afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1591906138e0565b602c54602b546040517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a0391821660048201526024810184905292935060009291169063095ea7b3906044016020604051808303816000875af1158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cad91906138f9565b905060008083118015610cc257506001821515145b15610d6957602b54602c54600091600160a060020a039081169163af2979eb91168684808b610cf342610168613916565b6040518763ffffffff1660e060020a028152600401610d179695949392919061392e565b6020604051808303816000875af1158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5a91906138e0565b90508015610d6757600191505b505b610d7285611d57565b151560011415610d80575060015b925050505b919050565b6000610d958461160c565b8015610da55750610da58361160c565b80610db7575060145460ff1615156001145b610e065760405160e560020a62461bcd02815260206004820152600760248201527f5061757365642100000000000000000000000000000000000000000000000000604482015260640161031f565b602c543390600090600160a060020a038681169116148015610e365750602b54600160a060020a03878116911614155b15610e4757610e4486612822565b90505b610e528683866128d5565b8015610e9357602854600090610e688387613969565b610e729190613988565b9050610e7e81866139ad565b94508015610e9157610e9187308361296a565b505b610e9e86868661296a565b610ea785612b8b565b50610eb186612b8b565b50602c54600160a060020a038681169116148015610edd5750602b54600160a060020a03878116911614155b15610f4957602a5484118015610ef95750610ef78661160c565b155b15610f495760405160e560020a62461bcd02815260206004820152601d60248201527f5f6d617857616c6c6574206f72205f6d61785478207265616368656421000000604482015260640161031f565b6001925050505b9392505050565b602f54600160a060020a03163314610f845760405160e560020a62461bcd02815260040161031f906138a9565b601255565b603054600160a060020a0316331480610fac5750602f54600160a060020a031633145b610fcb5760405160e560020a62461bcd02815260040161031f906139c4565b80158015610fe0575080610fde306115f1565b105b156110305760405160e560020a62461bcd02815260206004820152601360248201527f72656c656173655f616c6c2829206572726f7200000000000000000000000000604482015260640161031f565b30803161103d8284612ce0565b600061105382600160a060020a038516316139ad565b90508183600160a060020a03163110156110b25760405160e560020a62461bcd02815260206004820152601560248201527f73656e642065746842616c616e63653a206661696c0000000000000000000000604482015260640161031f565b6110bb81612e60565b603054600b546110d691600160a060020a0316908390612fd1565b50603154600a546110f291600160a060020a0316908390612fd1565b50602854600c546111039083613969565b61110d9190613988565b6015600082825461111e9190613916565b909155505050505050565b602f54600160a060020a031633146111565760405160e560020a62461bcd02815260040161031f906138a9565b601e849055601f8390556020829055602181905580826111768587613916565b6111809190613916565b61118a9190613916565b60225550505050565b602f54600090600160a060020a031633146111c35760405160e560020a62461bcd02815260040161031f906138a9565b60005b600e5481101561124d5782600160a060020a0316600e82815481106111ed576111ed61385c565b600091825260209091200154600160a060020a0316141561123b57600e818154811061121b5761121b61385c565b60009182526020909120018054600160a060020a03191690555090919050565b806112458161388e565b9150506111c6565b5090919050565b602f54600090600160a060020a031633146112845760405160e560020a62461bcd02815260040161031f906138a9565b600061128f8461174b565b509050600181151514156112a7576000915050610a85565b600d8054600181019091557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5018054600160a060020a031916600160a060020a03861690811790915560009081526008602052604090208390556113096130d6565b610a7f5760405160e560020a62461bcd02815260040161031f906139fb565b602f54600160a060020a031633146113555760405160e560020a62461bcd02815260040161031f906138a9565b602d54602c546040517ffeeb733d000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015291169063feeb733d90602401602060405180830381865afa1580156113ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113de91906138e0565b341161142f5760405160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f756768206c69716c2100000000000000000000000000000000604482015260640161031f565b604051600090309083908381818185875af1925050503d8060008114611471576040519150601f19603f3d011682016040523d82523d6000602084013e611476565b606091505b5090915050600181151514156114b75760006027541180156114985750600082115b156114b3576114aa3060275484613159565b506114b361320c565b5050565b60405160e560020a62461bcd02815260206004820152601a60248201527f73656e64696e672045544820696e20706c6f636b3a206661696c000000000000604482015260640161031f565b602f54600160a060020a0316331461152f5760405160e560020a62461bcd02815260040161031f906138a9565b602355565b602f54600160a060020a031633146115615760405160e560020a62461bcd02815260040161031f906138a9565b601c91909155602455565b602f54600160a060020a031633146115995760405160e560020a62461bcd02815260040161031f906138a9565b6014805460ff19168315151790556011546114b3576115b88143613916565b6011555050565b602f54600160a060020a031633146115ec5760405160e560020a62461bcd02815260040161031f906138a9565b600755565b600160a060020a031660009081526020819052604090205490565b6000805b600e54811015610aec5782600160a060020a0316600e82815481106116375761163761385c565b600091825260209091200154600160a060020a0316141561165b5750600192915050565b806116658161388e565b915050611610565b602f54600090600160a060020a0316331461169d5760405160e560020a62461bcd02815260040161031f906138a9565b60005b600f548110156116fb5782600160a060020a0316600f82815481106116c7576116c761385c565b600091825260209091200154600160a060020a031614156116e9575090919050565b806116f38161388e565b9150506116a0565b5050600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018054600160a060020a031916600160a060020a03831617905590565b60008060005b600d548110156117b05783600160a060020a0316600d82815481106117785761177861385c565b600091825260209091200154600160a060020a0316141561179e57600194909350915050565b806117a88161388e565b915050611751565b50600093849350915050565b603054600160a060020a03163314806117df5750602f54600160a060020a031633145b6117fe5760405160e560020a62461bcd02815260040161031f906139c4565b60005b602e548110156118c85760004260125461181b9190613916565b6013819055602d54602e8054929350600160a060020a03909116916376704de091908590811061184d5761184d61385c565b9060005260206000200154836040518363ffffffff1660e060020a028152600401611882929190918252602082015260400190565b600060405180830381600087803b15801561189c57600080fd5b505af11580156118b0573d6000803e3d6000fd5b505050505080806118c09061388e565b915050611801565b50565b602f54600160a060020a031633146118f85760405160e560020a62461bcd02815260040161031f906138a9565b61190181611f77565b50602f8054600160a060020a031916600160a060020a0392909216919091179055565b600480546109f09061381e565b60003361193d8161160c565b801561194d575061194d8461160c565b8061195f575060145460ff1615156001145b6119ae5760405160e560020a62461bcd02815260206004820152600760248201527f5061757365642100000000000000000000000000000000000000000000000000604482015260640161031f565b602c54600090600160a060020a0383811691161480156119dc5750602b54600160a060020a03868116911614155b15611a3657604051806040016040528042815260200160075442611a009190613916565b9052600160a060020a038616600090815260066020908152604090912082518155910151600190910155611a3385613510565b90505b8015611a7757602854600090611a4c8387613969565b611a569190613988565b9050611a6281866139ad565b94508015611a7557611a7583308361296a565b505b611a8282868661296a565b611a8b85612b8b565b50611a9582612b8b565b50602c54600160a060020a038381169116148015611ac15750602b54600160a060020a03868116911614155b15611b2557611ad08585613572565b151560011415611b255760405160e560020a62461bcd02815260206004820152601d60248201527f5f6d617857616c6c6574206f72205f6d61785478207265616368656421000000604482015260640161031f565b506001949350505050565b602f54600160a060020a03163314611b5d5760405160e560020a62461bcd02815260040161031f906138a9565b60168490556017839055601882905560198190558082611b7d8587613916565b611b879190613916565b611b919190613916565b601a5550505050565b602f54600090600160a060020a03163314611bca5760405160e560020a62461bcd02815260040161031f906138a9565b600080611bd68661174b565b909250905060018215151415611c6e5784600d8281548110611bfa57611bfa61385c565b60009182526020808320919091018054600160a060020a031916600160a060020a039485161790558883168252600890526040808220829055918716815220849055611c446130d6565b611c635760405160e560020a62461bcd02815260040161031f906139fb565b600192505050610f50565b50600095945050505050565b602f54600090600160a060020a03163314611caa5760405160e560020a62461bcd02815260040161031f906138a9565b600080611cb68461174b565b909250905060018215151415611d1557600d8181548110611cd957611cd961385c565b600091825260208083209091018054600160a060020a0319169055600160a060020a03861682526008905260408120555060019150610d859050565b5060009392505050565b602f54600160a060020a03163314611d4c5760405160e560020a62461bcd02815260040161031f906138a9565b602991909155602a55565b602f54600090600160a060020a03163314611d875760405160e560020a62461bcd02815260040161031f906138a9565b30318015610aec57600083600160a060020a03168260405160006040518083038185875af1925050503d8060008114611ddc576040519150601f19603f3d011682016040523d82523d6000602084013e611de1565b606091505b50909350610d8592505050565b6060602e805480602002602001604051908101604052809291908181526020018280548015610b4d57602002820191906000526020600020905b815481526020019060010190808311611e28575050505050905090565b602f54600090600160a060020a03163314611e755760405160e560020a62461bcd02815260040161031f906138a9565b60005b600f5481101561124d5782600160a060020a0316600f8281548110611e9f57611e9f61385c565b600091825260209091200154600160a060020a03161415611ecd57600f818154811061121b5761121b61385c565b80611ed78161388e565b915050611e78565b6060600d805480602002602001604051908101604052809291908181526020018280548015610b4d57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610b2f575050505050905090565b602f54600160a060020a03163314611f6c5760405160e560020a62461bcd02815260040161031f906138a9565b601d91909155602555565b602f54600090600160a060020a03163314611fa75760405160e560020a62461bcd02815260040161031f906138a9565b60005b600e548110156120055782600160a060020a0316600e8281548110611fd157611fd161385c565b600091825260209091200154600160a060020a03161415611ff3575090919050565b80611ffd8161388e565b915050611faa565b5050600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd018054600160a060020a031916600160a060020a03831617905590565b602f54600160a060020a031633146120825760405160e560020a62461bcd02815260040161031f906138a9565b60308054600160a060020a031916600160a060020a0392909216919091179055565b602f54600160a060020a031633146120d15760405160e560020a62461bcd02815260040161031f906138a9565b6013544210156121265760405160e560020a62461bcd02815260206004820152601160248201527f6c7020746f6b656e73206c6f636b65642e000000000000000000000000000000604482015260640161031f565b60005b602e5481101561228757602d54602e8054600092600160a060020a03169163890db72f918590811061215d5761215d61385c565b90600052602060002001546040518263ffffffff1660e060020a02815260040161218991815260200190565b61012060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190613a58565b50505050505092505050602d60009054906101000a9004600160a060020a0316600160a060020a031663ba7bd2aa602e848154811061220c5761220c61385c565b9060005260206000200154836040518363ffffffff1660e060020a028152600401612241929190918252602082015260400190565b600060405180830381600087803b15801561225b57600080fd5b505af115801561226f573d6000803e3d6000fd5b5050505050808061227f9061388e565b915050612129565b50602c546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091600160a060020a0316906370a0823190602401602060405180830381865afa1580156122ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230e91906138e0565b905080156118c857602c54602f546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015612384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b391906138f9565b603054600160a060020a03163314806123cb5750602f54600160a060020a031633145b6123ea5760405160e560020a62461bcd02815260040161031f906139c4565b6014805460ff19811690915560155460ff909116901580612409575081155b156124595760405160e560020a62461bcd02815260206004820152600e60248201527f63616e6e6f742073656e64203021000000000000000000000000000000000000604482015260640161031f565b336000612467600285613988565b90506000612474836115f1565b60408051600280825260608201835292935060009290916020830190803683375050602b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051939450600160a060020a039091169263ad5c4648925060048083019260209291908290030181865afa1580156124fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125209190613af5565b816000815181106125335761253361385c565b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106125675761256761385c565b600160a060020a039283166020918202929092010152602b541663b6f9de9584600084886125974261012c613916565b6040518663ffffffff1660e060020a0281526004016125b99493929190613b12565b6000604051808303818588803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b50505050506000826125f7866115f1565b61260191906139ad565b9050600061260e306115f1565b905061261b86308461296a565b600081612627306115f1565b61263191906139ad565b90508281146126855760405160e560020a62461bcd02815260206004820152601460248201527f4572726f723a207768696c6520706f6f6c696e67000000000000000000000000604482015260640161031f565b612690308488613159565b5088601560008282546126a391906139ad565b90915550506014805460ff1916981515989098179097555050505050505050565b600160a060020a0383166127425760405160e560020a62461bcd028152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a0382166127c15760405160e560020a62461bcd02815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6022546000906128318361160c565b1561283e57506000610a85565b61284783610a8b565b156128555750602554610a85565b60004311801561286757506000601154115b801561287557506011544311155b156128835750602454610a85565b600160a060020a03831660009081526006602052604090205442108015906128c65750600160a060020a0383166000908152600660205260409020600101544211155b15610a85575060235492915050565b600160a060020a03838116600090815260016020908152604080832093861683529290522054600019811461296457818110156129575760405160e560020a62461bcd02815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161031f565b61296484848484036126c4565b50505050565b600160a060020a0383166129e95760405160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a038216612a685760405160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a03831660009081526020819052604090205481811015612afa5760405160e560020a62461bcd02815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a03808516600090815260208190526040808220858503905591851681529081208054849290612b31908490613916565b9250508190555082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b7d91815260200190565b60405180910390a350505050565b600080612b97836115f1565b905060005b601054811015612c6b5783600160a060020a031660108281548110612bc357612bc361385c565b600091825260209091200154600160a060020a0316148015612be3575081155b80612c1e57506000600160a060020a031660108281548110612c0757612c0761385c565b600091825260209091200154600160a060020a0316145b15612c595760108181548110612c3657612c3661385c565b60009182526020909120018054600160a060020a03191690555060029392505050565b80612c638161388e565b915050612b9c565b50600160a060020a03831615801590612c845750600081115b15610aec57505060108054600180820183556000929092527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672018054600160a060020a031916600160a060020a03939093169290921790915590565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d1557612d1561385c565b600160a060020a03928316602091820292909201810191909152602b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dab9190613af5565b81600181518110612dbe57612dbe61385c565b600160a060020a039283166020918202929092010152602b54612de491309116846126c4565b602b54600160a060020a031663791ac9478360008487612e0642610168613916565b6040518663ffffffff1660e060020a028152600401612e29959493929190613b47565b600060405180830381600087803b158015612e4357600080fd5b505af1158015612e57573d6000803e3d6000fd5b50505050505050565b6014805460ff19811690915560285460095460ff9092169160009190612e869085613969565b612e909190613988565b905060005b600d54811015612fbb576000600d8281548110612eb457612eb461385c565b6000918252602080832090910154602854600160a060020a039091168084526008909252604083205491935090612eeb9086613969565b612ef59190613988565b90508015612fa657600082600160a060020a03168260405160006040518083038185875af1925050503d8060008114612f4a576040519150601f19603f3d011682016040523d82523d6000602084013e612f4f565b606091505b509091505080612fa45760405160e560020a62461bcd02815260206004820152601060248201527f73656e642065746865723a206661696c00000000000000000000000000000000604482015260640161031f565b505b50819050612fb38161388e565b915050612e95565b50506014805460ff191691151591909117905550565b6014805460ff19811690915560285460009160ff16908290612ff38587613969565b612ffd9190613988565b905080156130b857600086600160a060020a03168260405160006040518083038185875af1925050503d8060008114613052576040519150601f19603f3d011682016040523d82523d6000602084013e613057565b606091505b5090915050806130ac5760405160e560020a62461bcd02815260206004820152601460248201527f73656e6420657468416d6f756e743a206661696c000000000000000000000000604482015260640161031f565b50600192506130be9050565b60009250505b6014805460ff19169115159190911790559392505050565b600080805b600d5481101561313f5760086000600d83815481106130fc576130fc61385c565b6000918252602080832090910154600160a060020a0316835282019290925260400190205461312b9083613916565b9150806131378161388e565b9150506130db565b50602854811161315157600191505090565b600091505090565b602b54600090613174903090600160a060020a0316856126c4565b602b54600090600160a060020a031663f305d71984308785808b61319a42610168613916565b6040518863ffffffff1660e060020a0281526004016131be9695949392919061392e565b60606040518083038185885af11580156131dc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132019190613b83565b979650505050505050565b602c546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091600160a060020a0316906370a0823190602401602060405180830381865afa15801561326e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329291906138e0565b602c54602d546040517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a0391821660048201526024810184905292935060009291169063095ea7b3906044016020604051808303816000875af1158015613306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332a91906138f9565b9050600181151514156134c557602d54602c546040517ffeeb733d000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152600092919091169063feeb733d90602401602060405180830381865afa1580156133a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c591906138e0565b90506000426012546133d79190613916565b6013819055602d54602c546040517fd084c0a6000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152306024820152604481018890526064810184905260006084820181905293945091169063d084c0a690859060a40160206040518083038185885af1158015613464573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061348991906138e0565b602e80546001810182556000919091527f37fa166cbdbfbb1561ccd9ea985ec0218b5e68502e230525f544285b2bdf3d7e0155506114b3915050565b60405160e560020a62461bcd02815260206004820152601f60248201527f617070726f766520696e206c6f636b5f4c505f546f6b656e733a206661696c00604482015260640161031f565b601a5460009061351f8361160c565b1561352c57506000610a85565b61353583610a8b565b156135435750601d54610a85565b60004311801561355557506000601154115b801561356357506011544311155b15610a855750601c5492915050565b6000602954613580846115f1565b11801561359357506135918361160c565b155b806135b05750602a54821180156135b057506135ae8361160c565b155b15610aec57506001610a85565b600060208083528351808285015260005b818110156135ea578581018301518582016040015282016135ce565b818111156135fc576000604083870101525b50601f01601f1916929092016040019392505050565b600160a060020a03811681146118c857600080fd5b6000806040838503121561363a57600080fd5b823561364581613612565b946020939093013593505050565b60006020828403121561366557600080fd5b8135610f5081613612565b600081518084526020808501945080840160005b838110156136a9578151600160a060020a031687529582019590820190600101613684565b509495945050505050565b602081526000610f506020830184613670565b6000806000606084860312156136dc57600080fd5b83356136e781613612565b925060208401356136f781613612565b929592945050506040919091013590565b60006020828403121561371a57600080fd5b5035919050565b6000806000806080858703121561373757600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561376657600080fd5b50508035926020909101359150565b80151581146118c857600080fd5b6000806040838503121561379657600080fd5b823561364581613775565b6020808252825182820181905260009190848201906040850190845b818110156137d9578351835292840192918401916001016137bd565b50909695505050505050565b600080604083850312156137f857600080fd5b823561380381613612565b9150602083013561381381613612565b809150509250929050565b60028104600182168061383257607f821691505b602082108114156138565760e060020a634e487b7102600052602260045260246000fd5b50919050565b60e060020a634e487b7102600052603260045260246000fd5b60e060020a634e487b7102600052601160045260246000fd5b60006000198214156138a2576138a2613875565b5060010190565b6020808252600b908201527f4f6e6c79204f776e657221000000000000000000000000000000000000000000604082015260600190565b6000602082840312156138f257600080fd5b5051919050565b60006020828403121561390b57600080fd5b8151610f5081613775565b6000821982111561392957613929613875565b500190565b600160a060020a039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600081600019048311821515161561398357613983613875565b500290565b6000826139a85760e060020a634e487b7102600052601260045260246000fd5b500490565b6000828210156139bf576139bf613875565b500390565b60208082526017908201527f4f6e6c79206f776e6572206f72207a654f7261636c6521000000000000000000604082015260600190565b60208082526021908201527f546f74616c2073686172652069732067726561746572207468616e203130302560408201527f2e00000000000000000000000000000000000000000000000000000000000000606082015260800190565b60008060008060008060008060006101208a8c031215613a7757600080fd5b8951613a8281613612565b60208b0151909950613a9381613612565b8098505060408a0151965060608a0151955060808a0151613ab381613775565b60a08b015160c08c01519196509450613acb81613775565b60e08b01516101008c01519194509250613ae481613775565b809150509295985092959850929598565b600060208284031215613b0757600080fd5b8151610f5081613612565b848152608060208201526000613b2b6080830186613670565b600160a060020a03949094166040830152506060015292915050565b85815284602082015260a060408201526000613b6660a0830186613670565b600160a060020a0394909416606083015250608001529392505050565b600080600060608486031215613b9857600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122034c0a8b3fb02e714fa3178e22080c81fbbc1c795ba109e81ea2e0018eddfe0be64736f6c634300080b0033000000000000000000000000845b8c0db49fa0fc92f20d08a78ba2d78f92f8590000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000e2fe530c047f2d85298b07d9333c05737f1435fb0000000000000000000000000a4b5440e863f96324baf721a69c6f7ad59ba75100000000000000000000000072d20f97339cc22527fe89499c7347fac0ab5cd5

Deployed Bytecode

0x6080604052600436106102d15760003560e060020a900480637830b07211610179578063c1c4f03a116100e0578063dd62ed3e11610099578063e943100511610073578063e94310051461096e578063e9e55cf81461098e578063fd3f3b31146109a3578063fe313112146109c3576102d8565b8063dd62ed3e146108e8578063e41d3fa01461092e578063e8c61e191461094e576102d8565b8063c1c4f03a14610831578063c52cacaf14610851578063c7b722d414610871578063c9c602b414610891578063d5b09e26146108b3578063d77a8b40146108d3576102d8565b806395d89b411161013257806395d89b41146107905780639aab1f0c146107a5578063a9059cbb146107bb578063ac22a378146107db578063b51be5a2146107fb578063beb08cb61461081b576102d8565b80637830b072146106d857806378ff19e2146106ee5780637c418700146107255780637cb97b2b1461073a57806382247ec01461075a5780638da5cb5b14610770576102d8565b8063331e450a1161023857806353ec7ae8116101f15780635a6217be116101cb5780635a6217be1461065857806370a0823114610678578063779ee628146106985780637812dac3146106b8576102d8565b806353ec7ae8146105f857806356863e8d146106185780635950722714610638576102d8565b8063331e450a146105205780633d6c6dc41461053a5780634051d41e1461056d57806344d6cd12146105a557806348734774146105c557806349bd5a5e146105d8576102d8565b80631fe9ec771161028a5780631fe9ec771461045257806323b872dd1461047257806326577e3d146104925780632abf4b0e146104b45780632e07700a146104d4578063313ce567146104f4576102d8565b806306fdde0314610328578063095ea7b3146103535780631794e95a1461038357806318160ddd146103a35780631a6b71bf146103c25780631d1c1a59146103e4576102d8565b366102d857005b60405160e560020a62461bcd02815260206004820152600a60248201527f66616c6c6261636b28290000000000000000000000000000000000000000000060448201526064015b60405180910390fd5b34801561033457600080fd5b5061033d6109e3565b60405161034a91906135bd565b60405180910390f35b34801561035f57600080fd5b5061037361036e366004613627565b610a71565b604051901515815260200161034a565b34801561038f57600080fd5b5061037361039e366004613653565b610a8b565b3480156103af57600080fd5b506002545b60405190815260200161034a565b3480156103ce57600080fd5b506103d7610af5565b60405161034a91906136b4565b3480156103f057600080fd5b50601e54601f54602054602154602254602354602454602554610417979695949392919088565b604080519889526020890197909752958701949094526060860192909252608085015260a084015260c083015260e08201526101000161034a565b34801561045e57600080fd5b5061037361046d366004613653565b610b57565b34801561047e57600080fd5b5061037361048d3660046136c7565b610d8a565b34801561049e57600080fd5b506104b26104ad366004613708565b610f57565b005b3480156104c057600080fd5b506104b26104cf366004613708565b610f89565b3480156104e057600080fd5b506104b26104ef366004613721565b611129565b34801561050057600080fd5b5060055461050e9060ff1681565b60405160ff909116815260200161034a565b34801561052c57600080fd5b506014546103739060ff1681565b34801561054657600080fd5b50601654601754601854601954601a54601b54601c54601d54610417979695949392919088565b34801561057957600080fd5b5061058d610588366004613653565b611193565b604051600160a060020a03909116815260200161034a565b3480156105b157600080fd5b506103736105c0366004613627565b611254565b6104b26105d3366004613708565b611328565b3480156105e457600080fd5b50602c5461058d90600160a060020a031681565b34801561060457600080fd5b506104b2610613366004613708565b611502565b34801561062457600080fd5b506104b2610633366004613753565b611534565b34801561064457600080fd5b506104b2610653366004613783565b61156c565b34801561066457600080fd5b506104b2610673366004613708565b6115bf565b34801561068457600080fd5b506103b4610693366004613653565b6115f1565b3480156106a457600080fd5b506103736106b3366004613653565b61160c565b3480156106c457600080fd5b5061058d6106d3366004613653565b61166d565b3480156106e457600080fd5b506103b4602a5481565b3480156106fa57600080fd5b5061070e610709366004613653565b61174b565b60408051921515835260208301919091520161034a565b34801561073157600080fd5b506104b26117bc565b34801561074657600080fd5b506104b2610755366004613653565b6118cb565b34801561076657600080fd5b506103b460295481565b34801561077c57600080fd5b50602f5461058d90600160a060020a031681565b34801561079c57600080fd5b5061033d611924565b3480156107b157600080fd5b506103b460155481565b3480156107c757600080fd5b506103736107d6366004613627565b611931565b3480156107e757600080fd5b506104b26107f6366004613721565b611b30565b34801561080757600080fd5b506103736108163660046136c7565b611b9a565b34801561082757600080fd5b506103b460135481565b34801561083d57600080fd5b5061037361084c366004613653565b611c7a565b34801561085d57600080fd5b506104b261086c366004613753565b611d1f565b34801561087d57600080fd5b5061037361088c366004613653565b611d57565b34801561089d57600080fd5b506108a6611dee565b60405161034a91906137a1565b3480156108bf57600080fd5b5061058d6108ce366004613653565b611e45565b3480156108df57600080fd5b506103d7611edf565b3480156108f457600080fd5b506103b46109033660046137e5565b600160a060020a03918216600090815260016020908152604080832093909416825291909152205490565b34801561093a57600080fd5b506104b2610949366004613753565b611f3f565b34801561095a57600080fd5b5061058d610969366004613653565b611f77565b34801561097a57600080fd5b506104b2610989366004613653565b612055565b34801561099a57600080fd5b506104b26120a4565b3480156109af57600080fd5b5060305461058d90600160a060020a031681565b3480156109cf57600080fd5b506104b26109de366004613708565b6123a8565b600380546109f09061381e565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1c9061381e565b8015610a695780601f10610a3e57610100808354040283529160200191610a69565b820191906000526020600020905b815481529060010190602001808311610a4c57829003601f168201915b505050505081565b600033610a7f8185856126c4565b60019150505b92915050565b6000805b600f54811015610aec5782600160a060020a0316600f8281548110610ab657610ab661385c565b600091825260209091200154600160a060020a03161415610ada5750600192915050565b80610ae48161388e565b915050610a8f565b50600092915050565b60606010805480602002602001604051908101604052809291908181526020018280548015610b4d57602002820191906000526020600020905b8154600160a060020a03168152600190910190602001808311610b2f575b5050505050905090565b602f54600090600160a060020a03163314610b875760405160e560020a62461bcd02815260040161031f906138a9565b610b8f6120a4565b602c546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091600160a060020a0316906370a0823190602401602060405180830381865afa158015610bf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c1591906138e0565b602c54602b546040517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a0391821660048201526024810184905292935060009291169063095ea7b3906044016020604051808303816000875af1158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cad91906138f9565b905060008083118015610cc257506001821515145b15610d6957602b54602c54600091600160a060020a039081169163af2979eb91168684808b610cf342610168613916565b6040518763ffffffff1660e060020a028152600401610d179695949392919061392e565b6020604051808303816000875af1158015610d36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d5a91906138e0565b90508015610d6757600191505b505b610d7285611d57565b151560011415610d80575060015b925050505b919050565b6000610d958461160c565b8015610da55750610da58361160c565b80610db7575060145460ff1615156001145b610e065760405160e560020a62461bcd02815260206004820152600760248201527f5061757365642100000000000000000000000000000000000000000000000000604482015260640161031f565b602c543390600090600160a060020a038681169116148015610e365750602b54600160a060020a03878116911614155b15610e4757610e4486612822565b90505b610e528683866128d5565b8015610e9357602854600090610e688387613969565b610e729190613988565b9050610e7e81866139ad565b94508015610e9157610e9187308361296a565b505b610e9e86868661296a565b610ea785612b8b565b50610eb186612b8b565b50602c54600160a060020a038681169116148015610edd5750602b54600160a060020a03878116911614155b15610f4957602a5484118015610ef95750610ef78661160c565b155b15610f495760405160e560020a62461bcd02815260206004820152601d60248201527f5f6d617857616c6c6574206f72205f6d61785478207265616368656421000000604482015260640161031f565b6001925050505b9392505050565b602f54600160a060020a03163314610f845760405160e560020a62461bcd02815260040161031f906138a9565b601255565b603054600160a060020a0316331480610fac5750602f54600160a060020a031633145b610fcb5760405160e560020a62461bcd02815260040161031f906139c4565b80158015610fe0575080610fde306115f1565b105b156110305760405160e560020a62461bcd02815260206004820152601360248201527f72656c656173655f616c6c2829206572726f7200000000000000000000000000604482015260640161031f565b30803161103d8284612ce0565b600061105382600160a060020a038516316139ad565b90508183600160a060020a03163110156110b25760405160e560020a62461bcd02815260206004820152601560248201527f73656e642065746842616c616e63653a206661696c0000000000000000000000604482015260640161031f565b6110bb81612e60565b603054600b546110d691600160a060020a0316908390612fd1565b50603154600a546110f291600160a060020a0316908390612fd1565b50602854600c546111039083613969565b61110d9190613988565b6015600082825461111e9190613916565b909155505050505050565b602f54600160a060020a031633146111565760405160e560020a62461bcd02815260040161031f906138a9565b601e849055601f8390556020829055602181905580826111768587613916565b6111809190613916565b61118a9190613916565b60225550505050565b602f54600090600160a060020a031633146111c35760405160e560020a62461bcd02815260040161031f906138a9565b60005b600e5481101561124d5782600160a060020a0316600e82815481106111ed576111ed61385c565b600091825260209091200154600160a060020a0316141561123b57600e818154811061121b5761121b61385c565b60009182526020909120018054600160a060020a03191690555090919050565b806112458161388e565b9150506111c6565b5090919050565b602f54600090600160a060020a031633146112845760405160e560020a62461bcd02815260040161031f906138a9565b600061128f8461174b565b509050600181151514156112a7576000915050610a85565b600d8054600181019091557fd7b6990105719101dabeb77144f2a3385c8033acd3af97e9423a695e81ad1eb5018054600160a060020a031916600160a060020a03861690811790915560009081526008602052604090208390556113096130d6565b610a7f5760405160e560020a62461bcd02815260040161031f906139fb565b602f54600160a060020a031633146113555760405160e560020a62461bcd02815260040161031f906138a9565b602d54602c546040517ffeeb733d000000000000000000000000000000000000000000000000000000008152600160a060020a03918216600482015291169063feeb733d90602401602060405180830381865afa1580156113ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113de91906138e0565b341161142f5760405160e560020a62461bcd02815260206004820152601060248201527f4e6f7420656e6f756768206c69716c2100000000000000000000000000000000604482015260640161031f565b604051600090309083908381818185875af1925050503d8060008114611471576040519150601f19603f3d011682016040523d82523d6000602084013e611476565b606091505b5090915050600181151514156114b75760006027541180156114985750600082115b156114b3576114aa3060275484613159565b506114b361320c565b5050565b60405160e560020a62461bcd02815260206004820152601a60248201527f73656e64696e672045544820696e20706c6f636b3a206661696c000000000000604482015260640161031f565b602f54600160a060020a0316331461152f5760405160e560020a62461bcd02815260040161031f906138a9565b602355565b602f54600160a060020a031633146115615760405160e560020a62461bcd02815260040161031f906138a9565b601c91909155602455565b602f54600160a060020a031633146115995760405160e560020a62461bcd02815260040161031f906138a9565b6014805460ff19168315151790556011546114b3576115b88143613916565b6011555050565b602f54600160a060020a031633146115ec5760405160e560020a62461bcd02815260040161031f906138a9565b600755565b600160a060020a031660009081526020819052604090205490565b6000805b600e54811015610aec5782600160a060020a0316600e82815481106116375761163761385c565b600091825260209091200154600160a060020a0316141561165b5750600192915050565b806116658161388e565b915050611610565b602f54600090600160a060020a0316331461169d5760405160e560020a62461bcd02815260040161031f906138a9565b60005b600f548110156116fb5782600160a060020a0316600f82815481106116c7576116c761385c565b600091825260209091200154600160a060020a031614156116e9575090919050565b806116f38161388e565b9150506116a0565b5050600f80546001810182556000919091527f8d1108e10bcb7c27dddfc02ed9d693a074039d026cf4ea4240b40f7d581ac802018054600160a060020a031916600160a060020a03831617905590565b60008060005b600d548110156117b05783600160a060020a0316600d82815481106117785761177861385c565b600091825260209091200154600160a060020a0316141561179e57600194909350915050565b806117a88161388e565b915050611751565b50600093849350915050565b603054600160a060020a03163314806117df5750602f54600160a060020a031633145b6117fe5760405160e560020a62461bcd02815260040161031f906139c4565b60005b602e548110156118c85760004260125461181b9190613916565b6013819055602d54602e8054929350600160a060020a03909116916376704de091908590811061184d5761184d61385c565b9060005260206000200154836040518363ffffffff1660e060020a028152600401611882929190918252602082015260400190565b600060405180830381600087803b15801561189c57600080fd5b505af11580156118b0573d6000803e3d6000fd5b505050505080806118c09061388e565b915050611801565b50565b602f54600160a060020a031633146118f85760405160e560020a62461bcd02815260040161031f906138a9565b61190181611f77565b50602f8054600160a060020a031916600160a060020a0392909216919091179055565b600480546109f09061381e565b60003361193d8161160c565b801561194d575061194d8461160c565b8061195f575060145460ff1615156001145b6119ae5760405160e560020a62461bcd02815260206004820152600760248201527f5061757365642100000000000000000000000000000000000000000000000000604482015260640161031f565b602c54600090600160a060020a0383811691161480156119dc5750602b54600160a060020a03868116911614155b15611a3657604051806040016040528042815260200160075442611a009190613916565b9052600160a060020a038616600090815260066020908152604090912082518155910151600190910155611a3385613510565b90505b8015611a7757602854600090611a4c8387613969565b611a569190613988565b9050611a6281866139ad565b94508015611a7557611a7583308361296a565b505b611a8282868661296a565b611a8b85612b8b565b50611a9582612b8b565b50602c54600160a060020a038381169116148015611ac15750602b54600160a060020a03868116911614155b15611b2557611ad08585613572565b151560011415611b255760405160e560020a62461bcd02815260206004820152601d60248201527f5f6d617857616c6c6574206f72205f6d61785478207265616368656421000000604482015260640161031f565b506001949350505050565b602f54600160a060020a03163314611b5d5760405160e560020a62461bcd02815260040161031f906138a9565b60168490556017839055601882905560198190558082611b7d8587613916565b611b879190613916565b611b919190613916565b601a5550505050565b602f54600090600160a060020a03163314611bca5760405160e560020a62461bcd02815260040161031f906138a9565b600080611bd68661174b565b909250905060018215151415611c6e5784600d8281548110611bfa57611bfa61385c565b60009182526020808320919091018054600160a060020a031916600160a060020a039485161790558883168252600890526040808220829055918716815220849055611c446130d6565b611c635760405160e560020a62461bcd02815260040161031f906139fb565b600192505050610f50565b50600095945050505050565b602f54600090600160a060020a03163314611caa5760405160e560020a62461bcd02815260040161031f906138a9565b600080611cb68461174b565b909250905060018215151415611d1557600d8181548110611cd957611cd961385c565b600091825260208083209091018054600160a060020a0319169055600160a060020a03861682526008905260408120555060019150610d859050565b5060009392505050565b602f54600160a060020a03163314611d4c5760405160e560020a62461bcd02815260040161031f906138a9565b602991909155602a55565b602f54600090600160a060020a03163314611d875760405160e560020a62461bcd02815260040161031f906138a9565b30318015610aec57600083600160a060020a03168260405160006040518083038185875af1925050503d8060008114611ddc576040519150601f19603f3d011682016040523d82523d6000602084013e611de1565b606091505b50909350610d8592505050565b6060602e805480602002602001604051908101604052809291908181526020018280548015610b4d57602002820191906000526020600020905b815481526020019060010190808311611e28575050505050905090565b602f54600090600160a060020a03163314611e755760405160e560020a62461bcd02815260040161031f906138a9565b60005b600f5481101561124d5782600160a060020a0316600f8281548110611e9f57611e9f61385c565b600091825260209091200154600160a060020a03161415611ecd57600f818154811061121b5761121b61385c565b80611ed78161388e565b915050611e78565b6060600d805480602002602001604051908101604052809291908181526020018280548015610b4d57602002820191906000526020600020908154600160a060020a03168152600190910190602001808311610b2f575050505050905090565b602f54600160a060020a03163314611f6c5760405160e560020a62461bcd02815260040161031f906138a9565b601d91909155602555565b602f54600090600160a060020a03163314611fa75760405160e560020a62461bcd02815260040161031f906138a9565b60005b600e548110156120055782600160a060020a0316600e8281548110611fd157611fd161385c565b600091825260209091200154600160a060020a03161415611ff3575090919050565b80611ffd8161388e565b915050611faa565b5050600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd018054600160a060020a031916600160a060020a03831617905590565b602f54600160a060020a031633146120825760405160e560020a62461bcd02815260040161031f906138a9565b60308054600160a060020a031916600160a060020a0392909216919091179055565b602f54600160a060020a031633146120d15760405160e560020a62461bcd02815260040161031f906138a9565b6013544210156121265760405160e560020a62461bcd02815260206004820152601160248201527f6c7020746f6b656e73206c6f636b65642e000000000000000000000000000000604482015260640161031f565b60005b602e5481101561228757602d54602e8054600092600160a060020a03169163890db72f918590811061215d5761215d61385c565b90600052602060002001546040518263ffffffff1660e060020a02815260040161218991815260200190565b61012060405180830381865afa1580156121a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121cb9190613a58565b50505050505092505050602d60009054906101000a9004600160a060020a0316600160a060020a031663ba7bd2aa602e848154811061220c5761220c61385c565b9060005260206000200154836040518363ffffffff1660e060020a028152600401612241929190918252602082015260400190565b600060405180830381600087803b15801561225b57600080fd5b505af115801561226f573d6000803e3d6000fd5b5050505050808061227f9061388e565b915050612129565b50602c546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091600160a060020a0316906370a0823190602401602060405180830381865afa1580156122ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061230e91906138e0565b905080156118c857602c54602f546040517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0391821660048201526024810184905291169063a9059cbb906044016020604051808303816000875af1158015612384573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b391906138f9565b603054600160a060020a03163314806123cb5750602f54600160a060020a031633145b6123ea5760405160e560020a62461bcd02815260040161031f906139c4565b6014805460ff19811690915560155460ff909116901580612409575081155b156124595760405160e560020a62461bcd02815260206004820152600e60248201527f63616e6e6f742073656e64203021000000000000000000000000000000000000604482015260640161031f565b336000612467600285613988565b90506000612474836115f1565b60408051600280825260608201835292935060009290916020830190803683375050602b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051939450600160a060020a039091169263ad5c4648925060048083019260209291908290030181865afa1580156124fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125209190613af5565b816000815181106125335761253361385c565b6020026020010190600160a060020a03169081600160a060020a03168152505030816001815181106125675761256761385c565b600160a060020a039283166020918202929092010152602b541663b6f9de9584600084886125974261012c613916565b6040518663ffffffff1660e060020a0281526004016125b99493929190613b12565b6000604051808303818588803b1580156125d257600080fd5b505af11580156125e6573d6000803e3d6000fd5b50505050506000826125f7866115f1565b61260191906139ad565b9050600061260e306115f1565b905061261b86308461296a565b600081612627306115f1565b61263191906139ad565b90508281146126855760405160e560020a62461bcd02815260206004820152601460248201527f4572726f723a207768696c6520706f6f6c696e67000000000000000000000000604482015260640161031f565b612690308488613159565b5088601560008282546126a391906139ad565b90915550506014805460ff1916981515989098179097555050505050505050565b600160a060020a0383166127425760405160e560020a62461bcd028152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a0382166127c15760405160e560020a62461bcd02815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6022546000906128318361160c565b1561283e57506000610a85565b61284783610a8b565b156128555750602554610a85565b60004311801561286757506000601154115b801561287557506011544311155b156128835750602454610a85565b600160a060020a03831660009081526006602052604090205442108015906128c65750600160a060020a0383166000908152600660205260409020600101544211155b15610a85575060235492915050565b600160a060020a03838116600090815260016020908152604080832093861683529290522054600019811461296457818110156129575760405160e560020a62461bcd02815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161031f565b61296484848484036126c4565b50505050565b600160a060020a0383166129e95760405160e560020a62461bcd02815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a038216612a685760405160e560020a62461bcd02815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a03831660009081526020819052604090205481811015612afa5760405160e560020a62461bcd02815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e63650000000000000000000000000000000000000000000000000000606482015260840161031f565b600160a060020a03808516600090815260208190526040808220858503905591851681529081208054849290612b31908490613916565b9250508190555082600160a060020a031684600160a060020a03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b7d91815260200190565b60405180910390a350505050565b600080612b97836115f1565b905060005b601054811015612c6b5783600160a060020a031660108281548110612bc357612bc361385c565b600091825260209091200154600160a060020a0316148015612be3575081155b80612c1e57506000600160a060020a031660108281548110612c0757612c0761385c565b600091825260209091200154600160a060020a0316145b15612c595760108181548110612c3657612c3661385c565b60009182526020909120018054600160a060020a03191690555060029392505050565b80612c638161388e565b915050612b9c565b50600160a060020a03831615801590612c845750600081115b15610aec57505060108054600180820183556000929092527f1b6847dc741a1b0cd08d278845f9d819d87b734759afb55fe2de5cb82a9ae672018054600160a060020a031916600160a060020a03939093169290921790915590565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612d1557612d1561385c565b600160a060020a03928316602091820292909201810191909152602b54604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa158015612d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612dab9190613af5565b81600181518110612dbe57612dbe61385c565b600160a060020a039283166020918202929092010152602b54612de491309116846126c4565b602b54600160a060020a031663791ac9478360008487612e0642610168613916565b6040518663ffffffff1660e060020a028152600401612e29959493929190613b47565b600060405180830381600087803b158015612e4357600080fd5b505af1158015612e57573d6000803e3d6000fd5b50505050505050565b6014805460ff19811690915560285460095460ff9092169160009190612e869085613969565b612e909190613988565b905060005b600d54811015612fbb576000600d8281548110612eb457612eb461385c565b6000918252602080832090910154602854600160a060020a039091168084526008909252604083205491935090612eeb9086613969565b612ef59190613988565b90508015612fa657600082600160a060020a03168260405160006040518083038185875af1925050503d8060008114612f4a576040519150601f19603f3d011682016040523d82523d6000602084013e612f4f565b606091505b509091505080612fa45760405160e560020a62461bcd02815260206004820152601060248201527f73656e642065746865723a206661696c00000000000000000000000000000000604482015260640161031f565b505b50819050612fb38161388e565b915050612e95565b50506014805460ff191691151591909117905550565b6014805460ff19811690915560285460009160ff16908290612ff38587613969565b612ffd9190613988565b905080156130b857600086600160a060020a03168260405160006040518083038185875af1925050503d8060008114613052576040519150601f19603f3d011682016040523d82523d6000602084013e613057565b606091505b5090915050806130ac5760405160e560020a62461bcd02815260206004820152601460248201527f73656e6420657468416d6f756e743a206661696c000000000000000000000000604482015260640161031f565b50600192506130be9050565b60009250505b6014805460ff19169115159190911790559392505050565b600080805b600d5481101561313f5760086000600d83815481106130fc576130fc61385c565b6000918252602080832090910154600160a060020a0316835282019290925260400190205461312b9083613916565b9150806131378161388e565b9150506130db565b50602854811161315157600191505090565b600091505090565b602b54600090613174903090600160a060020a0316856126c4565b602b54600090600160a060020a031663f305d71984308785808b61319a42610168613916565b6040518863ffffffff1660e060020a0281526004016131be9695949392919061392e565b60606040518083038185885af11580156131dc573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906132019190613b83565b979650505050505050565b602c546040517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152600091600160a060020a0316906370a0823190602401602060405180830381865afa15801561326e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061329291906138e0565b602c54602d546040517f095ea7b3000000000000000000000000000000000000000000000000000000008152600160a060020a0391821660048201526024810184905292935060009291169063095ea7b3906044016020604051808303816000875af1158015613306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061332a91906138f9565b9050600181151514156134c557602d54602c546040517ffeeb733d000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152600092919091169063feeb733d90602401602060405180830381865afa1580156133a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906133c591906138e0565b90506000426012546133d79190613916565b6013819055602d54602c546040517fd084c0a6000000000000000000000000000000000000000000000000000000008152600160a060020a039182166004820152306024820152604481018890526064810184905260006084820181905293945091169063d084c0a690859060a40160206040518083038185885af1158015613464573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061348991906138e0565b602e80546001810182556000919091527f37fa166cbdbfbb1561ccd9ea985ec0218b5e68502e230525f544285b2bdf3d7e0155506114b3915050565b60405160e560020a62461bcd02815260206004820152601f60248201527f617070726f766520696e206c6f636b5f4c505f546f6b656e733a206661696c00604482015260640161031f565b601a5460009061351f8361160c565b1561352c57506000610a85565b61353583610a8b565b156135435750601d54610a85565b60004311801561355557506000601154115b801561356357506011544311155b15610a855750601c5492915050565b6000602954613580846115f1565b11801561359357506135918361160c565b155b806135b05750602a54821180156135b057506135ae8361160c565b155b15610aec57506001610a85565b600060208083528351808285015260005b818110156135ea578581018301518582016040015282016135ce565b818111156135fc576000604083870101525b50601f01601f1916929092016040019392505050565b600160a060020a03811681146118c857600080fd5b6000806040838503121561363a57600080fd5b823561364581613612565b946020939093013593505050565b60006020828403121561366557600080fd5b8135610f5081613612565b600081518084526020808501945080840160005b838110156136a9578151600160a060020a031687529582019590820190600101613684565b509495945050505050565b602081526000610f506020830184613670565b6000806000606084860312156136dc57600080fd5b83356136e781613612565b925060208401356136f781613612565b929592945050506040919091013590565b60006020828403121561371a57600080fd5b5035919050565b6000806000806080858703121561373757600080fd5b5050823594602084013594506040840135936060013592509050565b6000806040838503121561376657600080fd5b50508035926020909101359150565b80151581146118c857600080fd5b6000806040838503121561379657600080fd5b823561364581613775565b6020808252825182820181905260009190848201906040850190845b818110156137d9578351835292840192918401916001016137bd565b50909695505050505050565b600080604083850312156137f857600080fd5b823561380381613612565b9150602083013561381381613612565b809150509250929050565b60028104600182168061383257607f821691505b602082108114156138565760e060020a634e487b7102600052602260045260246000fd5b50919050565b60e060020a634e487b7102600052603260045260246000fd5b60e060020a634e487b7102600052601160045260246000fd5b60006000198214156138a2576138a2613875565b5060010190565b6020808252600b908201527f4f6e6c79204f776e657221000000000000000000000000000000000000000000604082015260600190565b6000602082840312156138f257600080fd5b5051919050565b60006020828403121561390b57600080fd5b8151610f5081613775565b6000821982111561392957613929613875565b500190565b600160a060020a039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b600081600019048311821515161561398357613983613875565b500290565b6000826139a85760e060020a634e487b7102600052601260045260246000fd5b500490565b6000828210156139bf576139bf613875565b500390565b60208082526017908201527f4f6e6c79206f776e6572206f72207a654f7261636c6521000000000000000000604082015260600190565b60208082526021908201527f546f74616c2073686172652069732067726561746572207468616e203130302560408201527f2e00000000000000000000000000000000000000000000000000000000000000606082015260800190565b60008060008060008060008060006101208a8c031215613a7757600080fd5b8951613a8281613612565b60208b0151909950613a9381613612565b8098505060408a0151965060608a0151955060808a0151613ab381613775565b60a08b015160c08c01519196509450613acb81613775565b60e08b01516101008c01519194509250613ae481613775565b809150509295985092959850929598565b600060208284031215613b0757600080fd5b8151610f5081613612565b848152608060208201526000613b2b6080830186613670565b600160a060020a03949094166040830152506060015292915050565b85815284602082015260a060408201526000613b6660a0830186613670565b600160a060020a0394909416606083015250608001529392505050565b600080600060608486031215613b9857600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122034c0a8b3fb02e714fa3178e22080c81fbbc1c795ba109e81ea2e0018eddfe0be64736f6c634300080b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000845b8c0db49fa0fc92f20d08a78ba2d78f92f8590000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000e2fe530c047f2d85298b07d9333c05737f1435fb0000000000000000000000000a4b5440e863f96324baf721a69c6f7ad59ba75100000000000000000000000072d20f97339cc22527fe89499c7347fac0ab5cd5

-----Decoded View---------------
Arg [0] : owner_0 (address): 0x845b8C0Db49fA0Fc92f20D08A78BA2d78f92f859
Arg [1] : router_v2_address (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [2] : externLocker_address (address): 0xE2fE530C047f2d85298b07D9333C05737f1435fB
Arg [3] : developmentMarketing_address_ (address): 0x0A4b5440E863F96324BaF721A69C6F7ad59ba751
Arg [4] : zeOracle_address_ (address): 0x72d20f97339Cc22527FE89499c7347fAc0Ab5cD5

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 000000000000000000000000845b8c0db49fa0fc92f20d08a78ba2d78f92f859
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [2] : 000000000000000000000000e2fe530c047f2d85298b07d9333c05737f1435fb
Arg [3] : 0000000000000000000000000a4b5440e863f96324baf721a69c6f7ad59ba751
Arg [4] : 00000000000000000000000072d20f97339cc22527fe89499c7347fac0ab5cd5


Deployed Bytecode Sourcemap

9267:20746:0:-:0;;;;;;;;;;-1:-1:-1;;;9267:20746:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29982:20;;-1:-1:-1;;;;;29982:20:0;;216:2:1;29982:20:0;;;198:21:1;255:2;235:18;;;228:30;294:12;274:18;;;267:40;324:18;;29982:20:0;;;;;;;;6460:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7193:201;;;;;;;;;;-1:-1:-1;7193:201:0;;;;;:::i;:::-;;:::i;:::-;;;1599:14:1;;1592:22;1574:41;;1562:2;1547:18;7193:201:0;1434:187:1;18761:178:0;;;;;;;;;;-1:-1:-1;18761:178:0;;;;;:::i;:::-;;:::i;6688:108::-;;;;;;;;;;-1:-1:-1;6776:12:0;;6688:108;;;2024:25:1;;;2012:2;1997:18;6688:108:0;1878:177:1;18945:83:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;10574:253::-;;;;;;;;;;-1:-1:-1;10574:253:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3158:25:1;;;3214:2;3199:18;;3192:34;;;;3242:18;;;3235:34;;;;3300:2;3285:18;;3278:34;;;;3343:3;3328:19;;3321:35;3387:3;3372:19;;3365:35;3431:3;3416:19;;3409:35;3475:3;3460:19;;3453:35;3145:3;3130:19;10574:253:0;2815:679:1;29250:655:0;;;;;;;;;;-1:-1:-1;29250:655:0;;;;;:::i;:::-;;:::i;20372:1021::-;;;;;;;;;;-1:-1:-1;20372:1021:0;;;;;:::i;:::-;;:::i;14382:131::-;;;;;;;;;;-1:-1:-1;14382:131:0;;;;;:::i;:::-;;:::i;:::-;;24665:864;;;;;;;;;;-1:-1:-1;24665:864:0;;;;;:::i;:::-;;:::i;15337:465::-;;;;;;;;;;-1:-1:-1;15337:465:0;;;;;:::i;:::-;;:::i;6512:21::-;;;;;;;;;;-1:-1:-1;6512:21:0;;;;;;;;;;;4707:4:1;4695:17;;;4677:36;;4665:2;4650:18;6512:21:0;4535:184:1;10232:35:0;;;;;;;;;;-1:-1:-1;10232:35:0;;;;;;;;10312:255;;;;;;;;;;-1:-1:-1;10312:255:0;;;;;;;;;;;;;;;;;;;;;;;;;;;19664:232;;;;;;;;;;-1:-1:-1;19664:232:0;;;;;:::i;:::-;;:::i;:::-;;;-1:-1:-1;;;;;4888:55:1;;;4870:74;;4858:2;4843:18;19664:232:0;4724:226:1;17160:432:0;;;;;;;;;;-1:-1:-1;17160:432:0;;;;;:::i;:::-;;:::i;13309:457::-;;;;;;:::i;:::-;;:::i;11104:26::-;;;;;;;;;;-1:-1:-1;11104:26:0;;;;-1:-1:-1;;;;;11104:26:0;;;14517:129;;;;;;;;;;-1:-1:-1;14517:129:0;;;;;:::i;:::-;;:::i;14158:218::-;;;;;;;;;;-1:-1:-1;14158:218:0;;;;;:::i;:::-;;:::i;16374:199::-;;;;;;;;;;-1:-1:-1;16374:199:0;;;;;:::i;:::-;;:::i;16256:114::-;;;;;;;;;;-1:-1:-1;16256:114:0;;;;;:::i;:::-;;:::i;6804:127::-;;;;;;;;;;-1:-1:-1;6804:127:0;;;;;:::i;:::-;;:::i;18579:178::-;;;;;;;;;;-1:-1:-1;18579:178:0;;;;;:::i;:::-;;:::i;19900:228::-;;;;;;;;;;-1:-1:-1;19900:228:0;;;;;:::i;:::-;;:::i;11006:60::-;;;;;;;;;;;;;;;;16577:263;;;;;;;;;;-1:-1:-1;16577:263:0;;;;;:::i;:::-;;:::i;:::-;;;;6082:14:1;;6075:22;6057:41;;6129:2;6114:18;;6107:34;;;;6030:18;16577:263:0;5889:258:1;28232:273:0;;;;;;;;;;;;;:::i;15814:111::-;;;;;;;;;;-1:-1:-1;15814:111:0;;;;;:::i;:::-;;:::i;10945:52::-;;;;;;;;;;;;;;;;11181:20;;;;;;;;;;-1:-1:-1;11181:20:0;;;;-1:-1:-1;;;;;11181:20:0;;;6485;;;;;;;;;;;;;:::i;10274:29::-;;;;;;;;;;;;;;;;21401:1072;;;;;;;;;;-1:-1:-1;21401:1072:0;;;;;:::i;:::-;;:::i;14876:455::-;;;;;;;;;;-1:-1:-1;14876:455:0;;;;;:::i;:::-;;:::i;18008:565::-;;;;;;;;;;-1:-1:-1;18008:565:0;;;;;:::i;:::-;;:::i;10189:38::-;;;;;;;;;;;;;;;;17596:300;;;;;;;;;;-1:-1:-1;17596:300:0;;;;;:::i;:::-;;:::i;16061:189::-;;;;;;;;;;-1:-1:-1;16061:189:0;;;;;:::i;:::-;;:::i;28980:263::-;;;;;;;;;;-1:-1:-1;28980:263:0;;;;;:::i;:::-;;:::i;27489:87::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20132:232::-;;;;;;;;;;-1:-1:-1;20132:232:0;;;;;:::i;:::-;;:::i;17900:104::-;;;;;;;;;;;;;:::i;7034:151::-;;;;;;;;;;-1:-1:-1;7034:151:0;;;;;:::i;:::-;-1:-1:-1;;;;;7150:18:0;;;7123:7;7150:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7034:151;14652:218;;;;;;;;;;-1:-1:-1;14652:218:0;;;;;:::i;:::-;;:::i;19433:227::-;;;;;;;;;;-1:-1:-1;19433:227:0;;;;;:::i;:::-;;:::i;15929:126::-;;;;;;;;;;-1:-1:-1;15929:126:0;;;;;:::i;:::-;;:::i;28511:462::-;;;;;;;;;;;;;:::i;11204:31::-;;;;;;;;;;-1:-1:-1;11204:31:0;;;;-1:-1:-1;;;;;11204:31:0;;;26468:1015;;;;;;;;;;-1:-1:-1;26468:1015:0;;;;;:::i;:::-;;:::i;6460:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7193:201::-;7276:4;3401:10;7332:32;3401:10;7348:7;7357:6;7332:8;:32::i;:::-;7382:4;7375:11;;;7193:201;;;;;:::o;18761:178::-;18819:4;;18830:89;18849:9;:16;18847:18;;18830:89;;;18897:4;-1:-1:-1;;;;;18881:20:0;:9;18891:1;18881:12;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18881:12:0;:20;18878:35;;;-1:-1:-1;18909:4:0;;18761:178;-1:-1:-1;;18761:178:0:o;18878:35::-;18867:3;;;;:::i;:::-;;;;18830:89;;;-1:-1:-1;18930:5:0;;18761:178;-1:-1:-1;;18761:178:0:o;18945:83::-;18988:16;19017:7;19010:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19010:14:0;;;;;;;;;;;;;;;;;;;;;;;18945:83;:::o;29250:655::-;13803:5;;29321:4;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;29339:15:::1;:13;:15::i;:::-;29385:13;::::0;:38:::1;::::0;;;;29417:4:::1;29385:38;::::0;::::1;4870:74:1::0;29366:16:0::1;::::0;-1:-1:-1;;;;;29385:13:0::1;::::0;:23:::1;::::0;4843:18:1;;29385:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29444:13;::::0;29474:15:::1;::::0;29444:57:::1;::::0;;;;-1:-1:-1;;;;;29474:15:0;;::::1;29444:57;::::0;::::1;8845:74:1::0;8935:18;;;8928:34;;;29366:57:0;;-1:-1:-1;29428:13:0::1;::::0;29444;::::1;::::0;:21:::1;::::0;8818:18:1;;29444:57:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29428:73;;29506:8;29547:1:::0;29536:8:::1;:12;:30;;;;-1:-1:-1::0;29562:4:0::1;29552:14:::0;::::1;;;29536:30;29533:294;;;29595:15;::::0;29675:13:::1;::::0;29574:18:::1;::::0;-1:-1:-1;;;;;29595:15:0;;::::1;::::0;:63:::1;::::0;29675:13:::1;29698:8:::0;29574:18;;29735:11;29756:21:::1;:15;29774:3;29756:21;:::i;:::-;29595:190;;;;;-1:-1:-1::0;;;29595:190:0::1;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29574:211:::0;-1:-1:-1;29795:14:0;;29792:29:::1;;29817:4;29811:10;;29792:29;29567:260;29533:294;29840:29;29857:11;29840:16;:29::i;:::-;:36;;29872:4;29840:36;29837:49;;;-1:-1:-1::0;29882:4:0::1;29837:49;29898:3:::0;-1:-1:-1;;;13843:1:0::1;29250:655:::0;;;:::o;20372:1021::-;20495:4;20530:20;20545:4;20530:14;:20::i;:::-;:42;;;;;20554:18;20569:2;20554:14;:18::i;:::-;20529:79;;;-1:-1:-1;20585:15:0;;;;:23;;:15;:23;20529:79;20512:121;;;;-1:-1:-1;;;;;20512:121:0;;10193:2:1;20512:121:0;;;10175:21:1;10232:1;10212:18;;;10205:29;10270:9;10250:18;;;10243:37;10297:18;;20512:121:0;9991:330:1;20512:121:0;20725:13;;3401:10;;20642:15;;-1:-1:-1;;;;;20711:28:0;;;20725:13;;20711:28;:64;;;;-1:-1:-1;20759:15:0;;-1:-1:-1;;;;;20743:32:0;;;20759:15;;20743:32;;20711:64;20708:112;;;20791:20;20806:4;20791:14;:20::i;:::-;20785:26;;20708:112;20832:38;20848:4;20854:7;20863:6;20832:15;:38::i;:::-;20882:7;;20879:175;;20937:10;;20899:18;;20921:12;20930:3;20921:6;:12;:::i;:::-;20920:27;;;;:::i;:::-;20899:48;-1:-1:-1;20957:20:0;20899:48;20957:20;;:::i;:::-;;-1:-1:-1;20989:14:0;;20986:60;;21004:42;21014:4;21028;21035:10;21004:9;:42::i;:::-;20890:164;20879:175;21068:27;21078:4;21084:2;21088:6;21068:9;:27::i;:::-;21116:24;21137:2;21116:20;:24::i;:::-;;21147:26;21168:4;21147:20;:26::i;:::-;-1:-1:-1;21207:13:0;;-1:-1:-1;;;;;21193:28:0;;;21207:13;;21193:28;:64;;;;-1:-1:-1;21241:15:0;;-1:-1:-1;;;;;21225:32:0;;;21241:15;;21225:32;;21193:64;21190:174;;;21279:6;;21270;:15;:46;;;;;21289:20;21304:4;21289:14;:20::i;:::-;:27;21270:46;21267:89;;;21317:39;;-1:-1:-1;;;;;21317:39:0;;11110:2:1;21317:39:0;;;11092:21:1;11149:2;11129:18;;;11122:30;11188:31;11168:18;;;11161:59;11237:18;;21317:39:0;10908:353:1;21267:89:0;21383:4;21376:11;;;;20372:1021;;;;;;:::o;14382:131::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;14467:18:::1;:42:::0;14382:131::o;24665:864::-;13893:16;;-1:-1:-1;;;;;13893:16:0;13913:10;13893:30;;:53;;-1:-1:-1;13927:5:0;;-1:-1:-1;;;;;13927:5:0;13936:10;13927:19;13893:53;13885:89;;;;-1:-1:-1;;;;;13885:89:0;;;;;;;:::i;:::-;24769:40;;24768:110;::::1;;;;24842:35;24815:24;24833:4;24815:9;:24::i;:::-;:62;24768:110;24765:143;;;24879:29;::::0;-1:-1:-1;;;;;24879:29:0;;11820:2:1;24879:29:0::1;::::0;::::1;11802:21:1::0;11859:2;11839:18;;;11832:30;11898:21;11878:18;;;11871:49;11937:18;;24879:29:0::1;11618:343:1::0;24765:143:0::1;24945:4;24978:17:::0;::::1;25002:64;24945:4:::0;25030:35;25002:16:::1;:64::i;:::-;25073:18;25094:30;25114:10:::0;-1:-1:-1;;;;;25094:17:0;::::1;;:30;:::i;:::-;25073:51;;25160:10;25140:9;-1:-1:-1::0;;;;;25140:17:0::1;;:30;25137:65;;;25171:31;::::0;-1:-1:-1;;;;;25171:31:0;;12168:2:1;25171:31:0::1;::::0;::::1;12150:21:1::0;12207:2;12187:18;;;12180:30;12246:23;12226:18;;;12219:51;12287:18;;25171:31:0::1;11966:345:1::0;25137:65:0::1;25217:28;25234:10;25217:16;:28::i;:::-;25272:16;::::0;25302:19;;25260:62:::1;::::0;-1:-1:-1;;;;;25272:16:0::1;::::0;25290:10;;25260:11:::1;:62::i;:::-;-1:-1:-1::0;25343:28:0::1;::::0;25385:35;;25331:90:::1;::::0;-1:-1:-1;;;;;25343:28:0::1;::::0;25373:10;;25331:11:::1;:90::i;:::-;-1:-1:-1::0;25513:10:0::1;::::0;25492:17;;25479:30:::1;::::0;:10;:30:::1;:::i;:::-;25478:45;;;;:::i;:::-;25460:14;;:63;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;;;;;24665:864:0:o;15337:465::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;15502:10:::1;:30:::0;;;15537:27;:50;;;15592:25;:46;;;15643:19;:34;;;15665:12;15620:18;15701:47:::1;15567:20:::0;15522:10;15701:47:::1;:::i;:::-;:75;;;;:::i;:::-;:97;;;;:::i;:::-;15682:16:::0;:116;-1:-1:-1;;;;15337:465:0:o;19664:232::-;13803:5;;19731:7;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;19748:9:::1;19744:133;19763:9;:16:::0;19761:18;::::1;19744:133;;;19811:4;-1:-1:-1::0;;;;;19795:20:0::1;:9;19805:1;19795:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19795:12:0::1;:20;19792:80;;;19832:9;19842:1;19832:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;19825:19:::0;;-1:-1:-1;;;;;;19825:19:0::1;::::0;;-1:-1:-1;19860:4:0;;29250:655;-1:-1:-1;29250:655:0:o;19792:80::-:1;19781:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19744:133;;;-1:-1:-1::0;19888:4:0;;19664:232;-1:-1:-1;19664:232:0:o;17160:432::-;13803:5;;17267:4;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;17281:10:::1;17296:27;17311:11;17296:14;:27::i;:::-;-1:-1:-1::0;17280:43:0;-1:-1:-1;17342:4:0::1;17333:13:::0;::::1;;;17330:29;;;17354:5;17347:12;;;;;17330:29;17374:16;:34:::0;;::::1;::::0;::::1;::::0;;;;::::1;::::0;;-1:-1:-1;;;;;;17374:34:0::1;-1:-1:-1::0;;;;;17374:34:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;17419:25:0;;;:12:::1;17374:34;17419:25:::0;;;;:52;;;17490:21:::1;:19;:21::i;:::-;17487:75;;17519:43;;-1:-1:-1::0;;;;;17519:43:0::1;;;;;;;:::i;13309:457::-:0;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;13394:12:::1;::::0;13428:13:::1;::::0;13394:49:::1;::::0;;;;-1:-1:-1;;;;;13428:13:0;;::::1;13394:49;::::0;::::1;4870:74:1::0;13394:12:0;::::1;::::0;:25:::1;::::0;4843:18:1;;13394:49:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13381:9;:62;13377:94;;13445:26;::::0;-1:-1:-1;;;;;13445:26:0;;12920:2:1;13445:26:0::1;::::0;::::1;12902:21:1::0;12959:2;12939:18;;;12932:30;12998:18;12978;;;12971:46;13034:18;;13445:26:0::1;12718:340:1::0;13377:94:0::1;13493:49;::::0;13479:9:::1;::::0;13509:4:::1;::::0;13528:9;;13479;13493:49;13479:9;13493:49;13528:9;13509:4;13493:49:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;13478:64:0;;-1:-1:-1;;13558:4:0::1;13550:12:::0;::::1;;;13547:216;;;13591:1;13575:13;;:17;:34;;;;;13608:1;13596:9;:13;13575:34;13572:133;;;13619:53;13640:4;13647:13;;13662:9;13619:12;:53::i;:::-;;13681:16;:14;:16::i;:::-;13370:396;13309:457:::0;:::o;13547:216::-:1;13721:36;::::0;-1:-1:-1;;;;;13721:36:0;;13475:2:1;13721:36:0::1;::::0;::::1;13457:21:1::0;13514:2;13494:18;;;13487:30;13553:28;13533:18;;;13526:56;13599:18;;13721:36:0::1;13273:350:1::0;14517:129:0;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;14596:25;:46;14517:129::o;14158:218::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;14271:23;:47;;;;14323:24;:49;14158:218::o;16374:199::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;16468:15:::1;:37:::0;;-1:-1:-1;;16468:37:0::1;::::0;::::1;;;::::0;;16513:11:::1;::::0;16510:58:::1;;16546:21;16561:6:::0;16546:12:::1;:21;:::i;:::-;16531:11;:37:::0;16374:199;;:::o;16256:114::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;16333:13:::1;:33:::0;16256:114::o;6804:127::-;-1:-1:-1;;;;;6905:18:0;6878:7;6905:18;;;;;;;;;;;;6804:127::o;18579:178::-;18637:4;;18648:89;18667:9;:16;18665:18;;18648:89;;;18715:4;-1:-1:-1;;;;;18699:20:0;:9;18709:1;18699:12;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;18699:12:0;:20;18696:35;;;-1:-1:-1;18727:4:0;;18579:178;-1:-1:-1;;18579:178:0:o;18696:35::-;18685:3;;;;:::i;:::-;;;;18648:89;;19900:228;13803:5;;19964:7;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;19981:9:::1;19977:105;19996:9;:16:::0;19994:18;::::1;19977:105;;;20044:4;-1:-1:-1::0;;;;;20028:20:0::1;:9;20038:1;20028:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20028:12:0::1;:20;20025:52;;;-1:-1:-1::0;20065:4:0;;29250:655;-1:-1:-1;29250:655:0:o;20025:52::-:1;20014:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19977:105;;;-1:-1:-1::0;;20086:9:0::1;:20:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;20086:20:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;20086:20:0::1;-1:-1:-1::0;;;;;20086:20:0;::::1;;::::0;;;19900:228::o;16577:263::-;16642:4;16648:7;16668:9;16664:149;16685:16;:23;16681:27;;16664:149;;;16751:11;-1:-1:-1;;;;;16728:34:0;:16;16745:1;16728:19;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;16728:19:0;:34;16725:81;;;16786:4;;16792:1;;-1:-1:-1;16577:263:0;-1:-1:-1;;16577:263:0:o;16725:81::-;16710:3;;;;:::i;:::-;;;;16664:149;;;-1:-1:-1;16827:5:0;;;;-1:-1:-1;16577:263:0;-1:-1:-1;;16577:263:0:o;28232:273::-;13893:16;;-1:-1:-1;;;;;13893:16:0;13913:10;13893:30;;:53;;-1:-1:-1;13927:5:0;;-1:-1:-1;;;;;13927:5:0;13936:10;13927:19;13893:53;13885:89;;;;-1:-1:-1;;;;;13885:89:0;;;;;;;:::i;:::-;28297:9:::1;28293:209;28312:9;:16:::0;28310:18;::::1;28293:209;;;28341:15;28380;28359:18;;:36;;;;:::i;:::-;28402:23;:33:::0;;;28442:12:::1;::::0;28474:9:::1;:12:::0;;28341:54;;-1:-1:-1;;;;;;28442:12:0;;::::1;::::0;:31:::1;::::0;28474:9;28484:1;;28474:12;::::1;;;;;:::i;:::-;;;;;;;;;28488:7;28442:54;;;;;-1:-1:-1::0;;;28442:54:0::1;;;;;;;;;13802:25:1::0;;;13858:2;13843:18;;13836:34;13790:2;13775:18;;13628:248;28442:54:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28334:168;28330:3;;;;;:::i;:::-;;;;28293:209;;;;28232:273::o:0;15814:111::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;15875:24:::1;15889:9;15875:13;:24::i;:::-;-1:-1:-1::0;15904:5:0::1;:17:::0;;-1:-1:-1;;;;;;15904:17:0::1;-1:-1:-1::0;;;;;15904:17:0;;;::::1;::::0;;;::::1;::::0;;15814:111::o;6485:20::-;;;;;;;:::i;21401:1072::-;21480:4;3401:10;21549:22;3401:10;21549:14;:22::i;:::-;:44;;;;;21575:18;21590:2;21575:14;:18::i;:::-;21548:81;;;-1:-1:-1;21606:15:0;;;;:23;;:15;:23;21548:81;21531:123;;;;-1:-1:-1;;;;;21531:123:0;;10193:2:1;21531:123:0;;;10175:21:1;10232:1;10212:18;;;10205:29;10270:9;10250:18;;;10243:37;10297:18;;21531:123:0;9991:330:1;21531:123:0;21718:13;;21667:11;;-1:-1:-1;;;;;21700:32:0;;;21718:13;;21700:32;:66;;;;-1:-1:-1;21750:15:0;;-1:-1:-1;;;;;21736:30:0;;;21750:15;;21736:30;;21700:66;21697:251;;;21800:108;;;;;;;;21838:15;21800:108;;;;21892:13;;21874:15;:31;;;;:::i;:::-;21800:108;;-1:-1:-1;;;;;21776:21:0;;;;;;:17;:21;;;;;;;;:132;;;;;;;;;;;;21923:17;21794:2;21923:13;:17::i;:::-;21917:23;;21697:251;21965:7;;21962:177;;22020:10;;21982:18;;22004:12;22013:3;22004:6;:12;:::i;:::-;22003:27;;;;:::i;:::-;21982:48;-1:-1:-1;22040:20:0;21982:48;22040:20;;:::i;:::-;;-1:-1:-1;22072:14:0;;22069:62;;22087:44;22097:6;22113:4;22120:10;22087:9;:44::i;:::-;21973:166;21962:177;22153:29;22163:6;22171:2;22175:6;22153:9;:29::i;:::-;22197:24;22218:2;22197:20;:24::i;:::-;;22228:28;22249:6;22228:20;:28::i;:::-;-1:-1:-1;22294:13:0;;-1:-1:-1;;;;;22276:32:0;;;22294:13;;22276:32;:66;;;;-1:-1:-1;22326:15:0;;-1:-1:-1;;;;;22312:30:0;;;22326:15;;22312:30;;22276:66;22273:171;;;22355:35;22379:2;22383:6;22355:23;:35::i;:::-;:41;;22392:4;22355:41;22352:84;;;22397:39;;-1:-1:-1;;;;;22397:39:0;;11110:2:1;22397:39:0;;;11092:21:1;11149:2;11129:18;;;11122:30;11188:31;11168:18;;;11161:59;11237:18;;22397:39:0;10908:353:1;22352:84:0;-1:-1:-1;22463:4:0;;21401:1072;-1:-1:-1;;;;21401:1072:0:o;14876:455::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;15040:9:::1;:29:::0;;;15074:26;:49;;;15128:24;:45;;;15178:18;:33;;;15199:12;15155:18;15234:45:::1;15103:20:::0;15059:10;15234:45:::1;:::i;:::-;:72;;;;:::i;:::-;:93;;;;:::i;:::-;15216:15:::0;:111;-1:-1:-1;;;;14876:455:0:o;18008:565::-;13803:5;;18144:4;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;18157:10:::1;18169:9:::0;18182:31:::1;18197:15;18182:14;:31::i;:::-;18156:57:::0;;-1:-1:-1;18156:57:0;-1:-1:-1;18232:4:0::1;18223:13:::0;::::1;;;18220:331;;;18270:15;18248:16;18265:1;18248:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:37:::0;;-1:-1:-1;;;;;;18248:37:0::1;-1:-1:-1::0;;;;;18248:37:0;;::::1;;::::0;;18315:29;;::::1;::::0;;:12:::1;:29:::0;;;;;;18308:36;;;18355:29;;::::1;::::0;;;:56;;;18437:21:::1;:19;:21::i;:::-;18434:75;;18466:43;;-1:-1:-1::0;;;;;18466:43:0::1;;;;;;;:::i;18434:75::-;18539:4;18532:11;;;;;;18220:331;-1:-1:-1::0;18564:5:0::1;::::0;18008:565;-1:-1:-1;;;;;18008:565:0:o;17596:300::-;13803:5;;17672:4;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;17689:10:::1;17701:9:::0;17714:27:::1;17729:11;17714:14;:27::i;:::-;17688:53:::0;;-1:-1:-1;17688:53:0;-1:-1:-1;17760:4:0::1;17751:13:::0;::::1;;;17748:127;;;17783:16;17800:1;17783:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;17776:26:::0;;-1:-1:-1;;;;;;17776:26:0::1;::::0;;-1:-1:-1;;;;;17820:25:0;::::1;::::0;;:12:::1;:25:::0;;;;;17813:32;-1:-1:-1;17776:26:0;;-1:-1:-1;17856:11:0::1;::::0;-1:-1:-1;17856:11:0::1;17748:127;-1:-1:-1::0;17887:5:0::1;::::0;17596:300;-1:-1:-1;;;17596:300:0:o;16061:189::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;16176:10:::1;:35:::0;;;;16217:6:::1;:28:::0;16061:189::o;28980:263::-;13803:5;;29052:4;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;29093:4:::1;29085:21;29114:14:::0;;29111:112:::1;;29137:9;29159:11;-1:-1:-1::0;;;;;29151:25:0::1;29184:10;29151:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;29136:63:0;;-1:-1:-1;29206:11:0::1;::::0;-1:-1:-1;;;29206:11:0::1;27489:87:::0;27533:16;27563:9;27556:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27489:87;:::o;20132:232::-;13803:5;;20199:7;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;20216:9:::1;20212:133;20231:9;:16:::0;20229:18;::::1;20212:133;;;20279:4;-1:-1:-1::0;;;;;20263:20:0::1;:9;20273:1;20263:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;20263:12:0::1;:20;20260:80;;;20300:9;20310:1;20300:12;;;;;;;;:::i;20260:80::-;20249:3:::0;::::1;::::0;::::1;:::i;:::-;;;;20212:133;;17900:104:::0;17952:16;17984;17977:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17977:23:0;;;;;;;;;;;;;;;;;;;;;;17900:104;:::o;14652:218::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;14765:23;:47;;;;14817:24;:49;14652:218::o;19433:227::-;13803:5;;19495:7;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;19512:9:::1;19508:107;19529:9;:16:::0;19525:20;::::1;19508:107;;;19577:4;-1:-1:-1::0;;;;;19561:20:0::1;:9;19571:1;19561:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;19561:12:0::1;:20;19558:52;;;-1:-1:-1::0;19598:4:0;;29250:655;-1:-1:-1;29250:655:0:o;19558:52::-:1;19547:3:::0;::::1;::::0;::::1;:::i;:::-;;;;19508:107;;;-1:-1:-1::0;;19619:9:0::1;:20:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;19619:20:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;19619:20:0::1;-1:-1:-1::0;;;;;19619:20:0;::::1;;::::0;;;19433:227::o;15929:126::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;16012:16:::1;:39:::0;;-1:-1:-1;;;;;;16012:39:0::1;-1:-1:-1::0;;;;;16012:39:0;;;::::1;::::0;;;::::1;::::0;;15929:126::o;28511:462::-;13803:5;;-1:-1:-1;;;;;13803:5:0;13812:10;13803:19;13795:43;;;;-1:-1:-1;;;;;13795:43:0;;;;;;;:::i;:::-;28579:23:::1;;28561:15;:41;28558:72;;;28603:27;::::0;-1:-1:-1;;;;;28603:27:0;;14083:2:1;28603:27:0::1;::::0;::::1;14065:21:1::0;14122:2;14102:18;;;14095:30;14161:19;14141:18;;;14134:47;14198:18;;28603:27:0::1;13881:341:1::0;28558:72:0::1;28645:9;28641:201;28660:9;:16:::0;28658:18;::::1;28641:201;;;28730:12;::::0;28761:9:::1;:12:::0;;28694:20:::1;::::0;-1:-1:-1;;;;;28730:12:0::1;::::0;:30:::1;::::0;28771:1;;28761:12;::::1;;;;;:::i;:::-;;;;;;;;;28730:44;;;;;-1:-1:-1::0;;;28730:44:0::1;;;;;;;2024:25:1::0;;2012:2;1997:18;;1878:177;28730:44:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28689:85;;;;;;;;;;28781:12;;;;;;;;;-1:-1:-1::0;;;;;28781:12:0::1;-1:-1:-1::0;;;;;28781:27:0::1;;28809:9;28819:1;28809:12;;;;;;;;:::i;:::-;;;;;;;;;28823;28781:55;;;;;-1:-1:-1::0;;;28781:55:0::1;;;;;;;;;13802:25:1::0;;;13858:2;13843:18;;13836:34;13790:2;13775:18;;13628:248;28781:55:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28682:160;28678:3;;;;;:::i;:::-;;;;28641:201;;;-1:-1:-1::0;28871:13:0::1;::::0;:38:::1;::::0;;;;28903:4:::1;28871:38;::::0;::::1;4870:74:1::0;28852:16:0::1;::::0;-1:-1:-1;;;;;28871:13:0::1;::::0;:23:::1;::::0;4843:18:1;;28871:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28852:57:::0;-1:-1:-1;28917:12:0;;28914:55:::1;;28930:13;::::0;28953:5:::1;::::0;28930:39:::1;::::0;;;;-1:-1:-1;;;;;28953:5:0;;::::1;28930:39;::::0;::::1;8845:74:1::0;8935:18;;;8928:34;;;28930:13:0;::::1;::::0;:22:::1;::::0;8818:18:1;;28930:39:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;26468:1015::-:0;13893:16;;-1:-1:-1;;;;;13893:16:0;13913:10;13893:30;;:53;;-1:-1:-1;13927:5:0;;-1:-1:-1;;;;;13927:5:0;13936:10;13927:19;13893:53;13885:89;;;;-1:-1:-1;;;;;13885:89:0;;;;;;;:::i;:::-;14053:15:::1;::::0;;-1:-1:-1;;14074:23:0;::::1;::::0;;;26562:14:::2;::::0;14053:15:::1;::::0;;::::1;::::0;26562:19;;:42:::2;;-1:-1:-1::0;26585:19:0;;26562:42:::2;26559:70;;;26605:24;::::0;-1:-1:-1;;;;;26605:24:0;;15453:2:1;26605:24:0::2;::::0;::::2;15435:21:1::0;15492:2;15472:18;;;15465:30;15531:16;15511:18;;;15504:44;15565:18;;26605:24:0::2;15251:338:1::0;26559:70:0::2;26658:10;26638:17;26693:18;26710:1;26693:14:::0;:18:::2;:::i;:::-;26673:38;;26716:26;26745:20;26755:9;26745;:20::i;:::-;26800:16;::::0;;26814:1:::2;26800:16:::0;;;;;::::2;::::0;;26716:49;;-1:-1:-1;26776:21:0::2;::::0;26800:16;;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;-1:-1:-1::0;;26831:15:0::2;::::0;:22:::2;::::0;;;;;;;26776:40;;-1:-1:-1;;;;;;26831:15:0;;::::2;::::0;:20:::2;::::0;-1:-1:-1;26831:22:0::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;:15;:22:::2;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;26821:4;26826:1;26821:7;;;;;;;;:::i;:::-;;;;;;:32;-1:-1:-1::0;;;;;26821:32:0::2;;;-1:-1:-1::0;;;;;26821:32:0::2;;;::::0;::::2;26876:4;26858;26863:1;26858:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;26858:23:0;;::::2;:7;::::0;;::::2;::::0;;;;;:23;26890:15:::2;::::0;::::2;:66;26972:9:::0;26890:15:::2;27003:4:::0;27014:9;27030:23:::2;:15;27049:3;27030:23;:::i;:::-;26890:168;;;;;-1:-1:-1::0;;;26890:168:0::2;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;27067:25;27118:18;27095:20;27105:9;27095;:20::i;:::-;:41;;;;:::i;:::-;27067:69;;27141:17;27161:24;27179:4;27161:9;:24::i;:::-;27141:44;;27190:54;27200:9;27219:4;27226:17;27190:9;:54::i;:::-;27249:17;27296:9;27269:24;27287:4;27269:9;:24::i;:::-;:36;;;;:::i;:::-;27249:56;;27328:17;27315:9;:30;27312:64;;27346:30;::::0;-1:-1:-1;;;;;27346:30:0;;16779:2:1;27346:30:0::2;::::0;::::2;16761:21:1::0;16818:2;16798:18;;;16791:30;16857:22;16837:18;;;16830:50;16897:18;;27346:30:0::2;16577:344:1::0;27312:64:0::2;27385:57;27406:4;27413:17;27432:9;27385:12;:57::i;:::-;;27465:14;27447;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;14108:15:0::1;:40:::0;;-1:-1:-1;;14108:40:0::1;::::0;::::1;;::::0;;;::::1;::::0;;;-1:-1:-1;;;;;;;;26468:1015:0:o;8411:380::-;-1:-1:-1;;;;;8547:19:0;;8539:68;;;;-1:-1:-1;;;;;8539:68:0;;17128:2:1;8539:68:0;;;17110:21:1;17167:2;17147:18;;;17140:30;17206:34;17186:18;;;17179:62;17277:6;17257:18;;;17250:34;17301:19;;8539:68:0;16926:400:1;8539:68:0;-1:-1:-1;;;;;8626:21:0;;8618:68;;;;-1:-1:-1;;;;;8618:68:0;;17533:2:1;8618:68:0;;;17515:21:1;17572:2;17552:18;;;17545:30;17611:34;17591:18;;;17584:62;17682:4;17662:18;;;17655:32;17704:19;;8618:68:0;17331:398:1;8618:68:0;-1:-1:-1;;;;;8699:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;8751:32;;2024:25:1;;;8751:32:0;;1997:18:1;8751:32:0;;;;;;;8411:380;;;:::o;23167:611::-;23262:16;;23228:7;;23295:22;23310:6;23295:14;:22::i;:::-;23292:462;;;-1:-1:-1;23333:1:0;23292:462;;;23352:22;23367:6;23352:14;:22::i;:::-;23349:405;;;-1:-1:-1;23393:24:0;;23349:405;;;23450:1;23435:12;:16;:35;;;;;23469:1;23455:11;;:15;23435:35;:66;;;;;23490:11;;23474:12;:27;;23435:66;23432:322;;;-1:-1:-1;23517:24:0;;23432:322;;;-1:-1:-1;;;;;23592:25:0;;;;;;:17;:25;;;;;:41;23573:15;:60;;;;:132;;-1:-1:-1;;;;;;23663:25:0;;;;;;:17;:25;;;;;:42;;;23644:15;:61;;23573:132;23562:192;;;-1:-1:-1;23721:25:0;;23769:3;23167:611;-1:-1:-1;;23167:611:0:o;8799:453::-;-1:-1:-1;;;;;7150:18:0;;;8934:24;7150:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;9001:37:0;;8997:248;;9083:6;9063:16;:26;;9055:68;;;;-1:-1:-1;;;;;9055:68:0;;17936:2:1;9055:68:0;;;17918:21:1;17975:2;17955:18;;;17948:30;18014:31;17994:18;;;17987:59;18063:18;;9055:68:0;17734:353:1;9055:68:0;9167:51;9176:5;9183:7;9211:6;9192:16;:25;9167:8;:51::i;:::-;8923:329;8799:453;;;:::o;7549:570::-;-1:-1:-1;;;;;7680:18:0;;7672:68;;;;-1:-1:-1;;;;;7672:68:0;;18294:2:1;7672:68:0;;;18276:21:1;18333:2;18313:18;;;18306:30;18372:34;18352:18;;;18345:62;18443:7;18423:18;;;18416:35;18468:19;;7672:68:0;18092:401:1;7672:68:0;-1:-1:-1;;;;;7759:16:0;;7751:64;;;;-1:-1:-1;;;;;7751:64:0;;18700:2:1;7751:64:0;;;18682:21:1;18739:2;18719:18;;;18712:30;18778:34;18758:18;;;18751:62;18849:5;18829:18;;;18822:33;18872:19;;7751:64:0;18498:399:1;7751:64:0;-1:-1:-1;;;;;7850:15:0;;7828:19;7850:15;;;;;;;;;;;7884:21;;;;7876:72;;;;-1:-1:-1;;;;;7876:72:0;;19104:2:1;7876:72:0;;;19086:21:1;19143:2;19123:18;;;19116:30;19182:34;19162:18;;;19155:62;19253:8;19233:18;;;19226:36;19279:19;;7876:72:0;18902:402:1;7876:72:0;-1:-1:-1;;;;;7984:15:0;;;:9;:15;;;;;;;;;;;8002:20;;;7984:38;;8044:13;;;;;;;;:23;;8016:6;;7984:9;8044:23;;8016:6;;8044:23;:::i;:::-;;;;;;;;8100:2;-1:-1:-1;;;;;8085:26:0;8094:4;-1:-1:-1;;;;;8085:26:0;;8104:6;8085:26;;;;2024:25:1;;2012:2;1997:18;;1878:177;8085:26:0;;;;;;;;7661:458;7549:570;;;:::o;19034:393::-;19094:7;19108:14;19125:15;19135:4;19125:9;:15::i;:::-;19108:32;;19153:9;19149:167;19168:7;:14;19166:16;;19149:167;;;19212:4;-1:-1:-1;;;;;19198:18:0;:7;19206:1;19198:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;19198:10:0;:18;:33;;;;-1:-1:-1;19220:11:0;;19198:33;:61;;;;19257:1;-1:-1:-1;;;;;19235:24:0;:7;19243:1;19235:10;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;19235:10:0;:24;19198:61;19195:116;;;19276:7;19284:1;19276:10;;;;;;;;:::i;:::-;;;;;;;;;;19269:17;;-1:-1:-1;;;;;;19269:17:0;;;-1:-1:-1;19302:1:0;;19034:393;-1:-1:-1;;;19034:393:0:o;19195:116::-;19184:3;;;;:::i;:::-;;;;19149:167;;;-1:-1:-1;;;;;;19327:18:0;;;;;;:32;;;19358:1;19349:6;:10;19327:32;19324:83;;;-1:-1:-1;;19367:7:0;:18;;;;;;;;-1:-1:-1;19367:18:0;;;;;;;;-1:-1:-1;;;;;;19367:18:0;-1:-1:-1;;;;;19367:18:0;;;;;;;;;;;;19034:393::o;24228:429::-;24326:16;;;24340:1;24326:16;;;;;;;;24302:21;;24326:16;;;;;;;;;;-1:-1:-1;24326:16:0;24302:40;;24367:4;24349;24354:1;24349:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24349:23:0;;;:7;;;;;;;;;;:23;;;;24389:15;;:22;;;;;;;;:15;;;;;:20;;:22;;;;;24349:7;;24389:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;24379:4;24384:1;24379:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;24379:32:0;;;:7;;;;;;;;;:32;24452:15;;24420:62;;24437:4;;24452:15;24470:11;24420:8;:62::i;:::-;24491:15;;-1:-1:-1;;;;;24491:15:0;:66;24566:11;24491:15;24598:4;24612:2;24623:21;:15;24641:3;24623:21;:::i;:::-;24491:160;;;;;-1:-1:-1;;;24491:160:0;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24295:362;24228:429;;:::o;25537:509::-;14053:15;;;-1:-1:-1;;14074:23:0;;;;;25673:10:::1;::::0;25650:8:::1;:19:::0;14053:15;;;;;14023:27;;25673:10;25637:32:::1;::::0;:10;:32:::1;:::i;:::-;25636:47;;;;:::i;:::-;25619:64;;25700:9;25696:345;25717:16;:23:::0;25713:27;::::1;25696:345;;;25755:10;25768:16;25785:1;25768:19;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;::::1;::::0;25847:10:::1;::::0;-1:-1:-1;;;;;25768:19:0;;::::1;25826:16:::0;;;:12:::1;:16:::0;;;;;;;25768:19;;-1:-1:-1;25847:10:0;25817:25:::1;::::0;:6;:25:::1;:::i;:::-;25816:42;;;;:::i;:::-;25796:62:::0;-1:-1:-1;25870:13:0;;25867:145:::1;;25896:9;25918:2;-1:-1:-1::0;;;;;25910:16:0::1;25934:9;25910:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;25895:53:0;;-1:-1:-1;;25962:13:0;25959:43:::1;;25976:26;::::0;-1:-1:-1;;;;;25976:26:0;;20121:2:1;25976:26:0::1;::::0;::::1;20103:21:1::0;20160:2;20140:18;;;20133:30;20199:18;20179;;;20172:46;20235:18;;25976:26:0::1;19919:340:1::0;25959:43:0::1;25884:128;25867:145;-1:-1:-1::0;25742:3:0;;-1:-1:-1;25742:3:0::1;::::0;::::1;:::i;:::-;;;;25696:345;;;-1:-1:-1::0;;14108:15:0;:40;;-1:-1:-1;;14108:40:0;;;;;;;;;;-1:-1:-1;25537:509:0:o;26054:408::-;14053:15;;;-1:-1:-1;;14074:23:0;;;;;26220:10:::1;::::0;26163:4;;14053:15;;;26163:4;;26197:19:::1;26210:6:::0;26197:10;:19:::1;:::i;:::-;26196:34;;;;:::i;:::-;26176:54:::0;-1:-1:-1;26242:13:0;;26239:218:::1;;26266:9;26288:2;-1:-1:-1::0;;;;;26280:16:0::1;26304:9;26280:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26265:53:0;;-1:-1:-1;;26330:13:0;26327:47:::1;;26344:30;::::0;-1:-1:-1;;;;;26344:30:0;;20466:2:1;26344:30:0::1;::::0;::::1;20448:21:1::0;20505:2;20485:18;;;20478:30;20544:22;20524:18;;;20517:50;20584:18;;26344:30:0::1;20264:344:1::0;26327:47:0::1;-1:-1:-1::0;26412:4:0::1;::::0;-1:-1:-1;26405:11:0::1;::::0;-1:-1:-1;26405:11:0::1;26239:218;26444:5;26437:12;;;14102:1;14108:15:::0;:40;;-1:-1:-1;;14108:40:0;;;;;;;;;;26054:408;;-1:-1:-1;;;26054:408:0:o;16844:312::-;16896:4;;;16940:118;16961:16;:23;16957:27;;16940:118;;;17017:12;:33;17030:16;17047:1;17030:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;17030:19:0;17017:33;;;;;;;;;;;;;17001:49;;;;:::i;:::-;;-1:-1:-1;16986:3:0;;;;:::i;:::-;;;;16940:118;;;;17093:10;;17076:12;17075:28;17072:62;;17122:4;17115:11;;;16844:312;:::o;17072:62::-;17147:5;17140:12;;;16844:312;:::o;23786:434::-;23924:15;;23876:7;;23892:62;;23909:4;;-1:-1:-1;;;;;23924:15:0;23942:11;23892:8;:62::i;:::-;24015:15;;23988:17;;-1:-1:-1;;;;;24015:15:0;:31;24054:9;24083:4;24100:11;23988:17;;24148:2;24162:21;:15;24180:3;24162:21;:::i;:::-;24015:176;;;;;-1:-1:-1;;;24015:176:0;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23961:230;23786:434;-1:-1:-1;;;;;;;23786:434:0:o;27583:643::-;27640:13;;:38;;;;;27672:4;27640:38;;;4870:74:1;27622:15:0;;-1:-1:-1;;;;;27640:13:0;;:23;;4843:18:1;;27640:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27706:13;;27736:12;;27706:53;;;;;-1:-1:-1;;;;;27736:12:0;;;27706:53;;;8845:74:1;8935:18;;;8928:34;;;27622:56:0;;-1:-1:-1;27683:20:0;;27706:13;;;:21;;8818:18:1;;27706:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27683:76;-1:-1:-1;27789:4:0;27770:23;;;;27767:456;;;27821:12;;27855:13;;27821:49;;;;;-1:-1:-1;;;;;27855:13:0;;;27821:49;;;4870:74:1;27801:17:0;;27821:12;;;;;:25;;4843:18:1;;27821:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27801:69;;27885:15;27924;27903:18;;:36;;;;:::i;:::-;27946:23;:33;;;28012:12;;28061:13;;28012:104;;;;;-1:-1:-1;;;;;28061:13:0;;;28012:104;;;21238:34:1;28085:4:0;21288:18:1;;;21281:43;21340:18;;;21333:34;;;21383:18;;;21376:34;;;27986:23:0;21426:19:1;;;21419:51;;;27946:33:0;;-1:-1:-1;28012:12:0;;;:22;;28042:9;;21149:19:1;;28012:104:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28125:9;:31;;;;;;;-1:-1:-1;28125:31:0;;;;;;;-1:-1:-1;27767:456:0;;-1:-1:-1;;27767:456:0;;28176:41;;-1:-1:-1;;;;;28176:41:0;;21683:2:1;28176:41:0;;;21665:21:1;21722:2;21702:18;;;21695:30;21761:33;21741:18;;;21734:61;21812:18;;28176:41:0;21481:355:1;22753:404:0;22847:15;;22813:7;;22875:22;22890:6;22875:14;:22::i;:::-;22872:261;;;-1:-1:-1;22913:1:0;22872:261;;;22932:22;22947:6;22932:14;:22::i;:::-;22929:204;;;-1:-1:-1;22973:23:0;;22929:204;;;23035:1;23020:12;:16;:35;;;;;23054:1;23040:11;;:15;23020:35;:66;;;;;23075:11;;23059:12;:27;;23020:66;23017:116;;;-1:-1:-1;23102:23:0;;23148:3;22753:404;-1:-1:-1;;22753:404:0:o;22483:260::-;22567:4;22605:10;;22587:15;22597:4;22587:9;:15::i;:::-;:28;:59;;;;;22619:20;22634:4;22619:14;:20::i;:::-;:27;22587:59;22586:119;;;;22667:6;;22658;:15;:46;;;;;22677:20;22692:4;22677:14;:20::i;:::-;:27;22658:46;22583:135;;;-1:-1:-1;22714:4:0;22707:11;;353:597:1;465:4;494:2;523;512:9;505:21;555:6;549:13;598:6;593:2;582:9;578:18;571:34;623:1;633:140;647:6;644:1;641:13;633:140;;;742:14;;;738:23;;732:30;708:17;;;727:2;704:26;697:66;662:10;;633:140;;;791:6;788:1;785:13;782:91;;;861:1;856:2;847:6;836:9;832:22;828:31;821:42;782:91;-1:-1:-1;934:2:1;913:15;-1:-1:-1;;909:29:1;894:45;;;;941:2;890:54;;353:597;-1:-1:-1;;;353:597:1:o;955:154::-;-1:-1:-1;;;;;1034:5:1;1030:54;1023:5;1020:65;1010:93;;1099:1;1096;1089:12;1114:315;1182:6;1190;1243:2;1231:9;1222:7;1218:23;1214:32;1211:52;;;1259:1;1256;1249:12;1211:52;1298:9;1285:23;1317:31;1342:5;1317:31;:::i;:::-;1367:5;1419:2;1404:18;;;;1391:32;;-1:-1:-1;;;1114:315:1:o;1626:247::-;1685:6;1738:2;1726:9;1717:7;1713:23;1709:32;1706:52;;;1754:1;1751;1744:12;1706:52;1793:9;1780:23;1812:31;1837:5;1812:31;:::i;2060:484::-;2113:3;2151:5;2145:12;2178:6;2173:3;2166:19;2204:4;2233:2;2228:3;2224:12;2217:19;;2270:2;2263:5;2259:14;2291:1;2301:218;2315:6;2312:1;2309:13;2301:218;;;2380:13;;-1:-1:-1;;;;;2376:62:1;2364:75;;2459:12;;;;2494:15;;;;2337:1;2330:9;2301:218;;;-1:-1:-1;2535:3:1;;2060:484;-1:-1:-1;;;;;2060:484:1:o;2549:261::-;2728:2;2717:9;2710:21;2691:4;2748:56;2800:2;2789:9;2785:18;2777:6;2748:56;:::i;3499:456::-;3576:6;3584;3592;3645:2;3633:9;3624:7;3620:23;3616:32;3613:52;;;3661:1;3658;3651:12;3613:52;3700:9;3687:23;3719:31;3744:5;3719:31;:::i;:::-;3769:5;-1:-1:-1;3826:2:1;3811:18;;3798:32;3839:33;3798:32;3839:33;:::i;:::-;3499:456;;3891:7;;-1:-1:-1;;;3945:2:1;3930:18;;;;3917:32;;3499:456::o;3960:180::-;4019:6;4072:2;4060:9;4051:7;4047:23;4043:32;4040:52;;;4088:1;4085;4078:12;4040:52;-1:-1:-1;4111:23:1;;3960:180;-1:-1:-1;3960:180:1:o;4145:385::-;4231:6;4239;4247;4255;4308:3;4296:9;4287:7;4283:23;4279:33;4276:53;;;4325:1;4322;4315:12;4276:53;-1:-1:-1;;4348:23:1;;;4418:2;4403:18;;4390:32;;-1:-1:-1;4469:2:1;4454:18;;4441:32;;4520:2;4505:18;4492:32;;-1:-1:-1;4145:385:1;-1:-1:-1;4145:385:1:o;5199:248::-;5267:6;5275;5328:2;5316:9;5307:7;5303:23;5299:32;5296:52;;;5344:1;5341;5334:12;5296:52;-1:-1:-1;;5367:23:1;;;5437:2;5422:18;;;5409:32;;-1:-1:-1;5199:248:1:o;5452:118::-;5538:5;5531:13;5524:21;5517:5;5514:32;5504:60;;5560:1;5557;5550:12;5575:309;5640:6;5648;5701:2;5689:9;5680:7;5676:23;5672:32;5669:52;;;5717:1;5714;5707:12;5669:52;5756:9;5743:23;5775:28;5797:5;5775:28;:::i;6152:632::-;6323:2;6375:21;;;6445:13;;6348:18;;;6467:22;;;6294:4;;6323:2;6546:15;;;;6520:2;6505:18;;;6294:4;6589:169;6603:6;6600:1;6597:13;6589:169;;;6664:13;;6652:26;;6733:15;;;;6698:12;;;;6625:1;6618:9;6589:169;;;-1:-1:-1;6775:3:1;;6152:632;-1:-1:-1;;;;;;6152:632:1:o;6789:388::-;6857:6;6865;6918:2;6906:9;6897:7;6893:23;6889:32;6886:52;;;6934:1;6931;6924:12;6886:52;6973:9;6960:23;6992:31;7017:5;6992:31;:::i;:::-;7042:5;-1:-1:-1;7099:2:1;7084:18;;7071:32;7112:33;7071:32;7112:33;:::i;:::-;7164:7;7154:17;;;6789:388;;;;;:::o;7182:437::-;7267:1;7257:12;;7314:1;7304:12;;;7325:61;;7379:4;7371:6;7367:17;7357:27;;7325:61;7432:2;7424:6;7421:14;7401:18;7398:38;7395:218;;;-1:-1:-1;;;;;7466:1:1;7459:88;7570:4;7567:1;7560:15;7598:4;7595:1;7588:15;7395:218;;7182:437;;;:::o;7624:184::-;-1:-1:-1;;;;;7673:1:1;7666:88;7773:4;7770:1;7763:15;7797:4;7794:1;7787:15;7813:184;-1:-1:-1;;;;;7862:1:1;7855:88;7962:4;7959:1;7952:15;7986:4;7983:1;7976:15;8002:135;8041:3;-1:-1:-1;;8062:17:1;;8059:43;;;8082:18;;:::i;:::-;-1:-1:-1;8129:1:1;8118:13;;8002:135::o;8142:335::-;8344:2;8326:21;;;8383:2;8363:18;;;8356:30;8422:13;8417:2;8402:18;;8395:41;8468:2;8453:18;;8142:335::o;8482:184::-;8552:6;8605:2;8593:9;8584:7;8580:23;8576:32;8573:52;;;8621:1;8618;8611:12;8573:52;-1:-1:-1;8644:16:1;;8482:184;-1:-1:-1;8482:184:1:o;8973:245::-;9040:6;9093:2;9081:9;9072:7;9068:23;9064:32;9061:52;;;9109:1;9106;9099:12;9061:52;9141:9;9135:16;9160:28;9182:5;9160:28;:::i;9223:128::-;9263:3;9294:1;9290:6;9287:1;9284:13;9281:39;;;9300:18;;:::i;:::-;-1:-1:-1;9336:9:1;;9223:128::o;9356:630::-;-1:-1:-1;;;;;9738:15:1;;;9720:34;;9785:2;9770:18;;9763:34;;;;9828:2;9813:18;;9806:34;;;;9871:2;9856:18;;9849:34;;;;9920:15;;;9914:3;9899:19;;9892:44;9967:3;9952:19;;9945:35;;;;9646:3;9631:19;;9356:630::o;10326:168::-;10366:7;10432:1;10428;10424:6;10420:14;10417:1;10414:21;10409:1;10402:9;10395:17;10391:45;10388:71;;;10439:18;;:::i;:::-;-1:-1:-1;10479:9:1;;10326:168::o;10499:274::-;10539:1;10565;10555:189;;-1:-1:-1;;;;;10597:1:1;10590:88;10701:4;10698:1;10691:15;10729:4;10726:1;10719:15;10555:189;-1:-1:-1;10758:9:1;;10499:274::o;10778:125::-;10818:4;10846:1;10843;10840:8;10837:34;;;10851:18;;:::i;:::-;-1:-1:-1;10888:9:1;;10778:125::o;11266:347::-;11468:2;11450:21;;;11507:2;11487:18;;;11480:30;11546:25;11541:2;11526:18;;11519:53;11604:2;11589:18;;11266:347::o;12316:397::-;12518:2;12500:21;;;12557:2;12537:18;;;12530:30;12596:34;12591:2;12576:18;;12569:62;12667:3;12662:2;12647:18;;12640:31;12703:3;12688:19;;12316:397::o;14227:1019::-;14360:6;14368;14376;14384;14392;14400;14408;14416;14424;14477:3;14465:9;14456:7;14452:23;14448:33;14445:53;;;14494:1;14491;14484:12;14445:53;14526:9;14520:16;14545:31;14570:5;14545:31;:::i;:::-;14645:2;14630:18;;14624:25;14595:5;;-1:-1:-1;14658:33:1;14624:25;14658:33;:::i;:::-;14710:7;14700:17;;;14757:2;14746:9;14742:18;14736:25;14726:35;;14801:2;14790:9;14786:18;14780:25;14770:35;;14850:3;14839:9;14835:19;14829:26;14864:30;14886:7;14864:30;:::i;:::-;14960:3;14945:19;;14939:26;15010:3;14995:19;;14989:26;14913:7;;-1:-1:-1;14939:26:1;-1:-1:-1;15024:30:1;14989:26;15024:30;:::i;:::-;15120:3;15105:19;;15099:26;15170:3;15155:19;;15149:26;15073:7;;-1:-1:-1;15099:26:1;-1:-1:-1;15184:30:1;15149:26;15184:30;:::i;:::-;15233:7;15223:17;;;14227:1019;;;;;;;;;;;:::o;15783:251::-;15853:6;15906:2;15894:9;15885:7;15881:23;15877:32;15874:52;;;15922:1;15919;15912:12;15874:52;15954:9;15948:16;15973:31;15998:5;15973:31;:::i;16039:533::-;16310:6;16299:9;16292:25;16353:3;16348:2;16337:9;16333:18;16326:31;16273:4;16374:57;16426:3;16415:9;16411:19;16403:6;16374:57;:::i;:::-;-1:-1:-1;;;;;16467:55:1;;;;16462:2;16447:18;;16440:83;-1:-1:-1;16554:2:1;16539:18;16532:34;16366:65;16039:533;-1:-1:-1;;16039:533:1:o;19309:605::-;19608:6;19597:9;19590:25;19651:6;19646:2;19635:9;19631:18;19624:34;19694:3;19689:2;19678:9;19674:18;19667:31;19571:4;19715:57;19767:3;19756:9;19752:19;19744:6;19715:57;:::i;:::-;-1:-1:-1;;;;;19808:55:1;;;;19803:2;19788:18;;19781:83;-1:-1:-1;19895:3:1;19880:19;19873:35;19707:65;19309:605;-1:-1:-1;;;19309:605:1:o;20613:306::-;20701:6;20709;20717;20770:2;20758:9;20749:7;20745:23;20741:32;20738:52;;;20786:1;20783;20776:12;20738:52;20815:9;20809:16;20799:26;;20865:2;20854:9;20850:18;20844:25;20834:35;;20909:2;20898:9;20894:18;20888:25;20878:35;;20613:306;;;;;:::o

Swarm Source

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