ETH Price: $2,638.65 (+0.84%)

Token

camulah harice (harice)
 

Overview

Max Total Supply

420,690,000 harice

Holders

24

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
camulah

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-06-28
*/

// SPDX-License-Identifier: MIT

/*

************ we ded it jeo *************

https://t.me/CamulahHarice

https://x.com/camulahharice

https://www.camulahharice4vicepres.com/

*/


  pragma solidity ^0.8.2;

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

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

  interface IERC20 {
      function totalSupply() external view returns (uint256);
      function balanceOf(address account) external view returns (uint256);
      function transfer(address to, uint256 amount) external returns (bool);
      function allowance(address owner, address spender) external view returns (uint256);
      function approve(address spender, uint256 amount) external returns (bool);
      function transferFrom(
          address from,
          address to,
          uint256 amount
      ) external returns (bool);

      event Transfer(address indexed from, address indexed to, uint256 value);
      event Approval(address indexed owner, address indexed spender, uint256 value);
  }

  interface IERC20Metadata is IERC20 {
      function name() external view returns (string memory);
      function symbol() external view returns (string memory);
      function decimals() external view returns (uint8);
  }

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

      uint256 private _totalSupply;

      string private _name;
      string private _symbol;

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

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

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

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

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

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

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

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

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

      function transferFrom(
          address from,
          address to,
          uint256 amount
      ) public virtual override returns (bool) {
          address spender = _msgSender();
          _spendAllowance(from, spender, amount);
          _transfer(from, to, amount);
          return true;
      }

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

      function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
          address owner = _msgSender();
          uint256 currentAllowance = _allowances[owner][spender];
          require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
          unchecked {
              _approve(owner, spender, currentAllowance - subtractedValue);
          }

          return true;
      }

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

          _beforeTokenTransfer(from, to, amount);

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

          _afterTokenTransfer(from, to, amount);
      }

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

          _beforeTokenTransfer(address(0), account, amount);

          _totalSupply += amount;
          _balances[account] += amount;
          emit Transfer(address(0), account, amount);

          _afterTokenTransfer(address(0), account, amount);
      }

      function _burn(address account, uint256 amount) internal virtual {
          require(account != address(0), "ERC20: burn from the zero address");

          _beforeTokenTransfer(account, address(0), amount);

          uint256 accountBalance = _balances[account];
          require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
          unchecked {
              _balances[account] = accountBalance - amount;
          }
          _totalSupply -= amount;

          emit Transfer(account, address(0), amount);

          _afterTokenTransfer(account, address(0), amount);
      }

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

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

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

      function _beforeTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}

      function _afterTokenTransfer(
          address from,
          address to,
          uint256 amount
      ) internal virtual {}
  }

  abstract contract Ownable is Context {
      address private _owner;

      event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

      constructor() {
          _transferOwnership(_msgSender());
      }

      function owner() public view virtual returns (address) {
          return _owner;
      }

      modifier onlyOwner() {
          require(owner() == _msgSender(), "Ownable: caller is not the owner");
          _;
      }

      function renounceOwnership() public virtual onlyOwner {
          _transferOwnership(address(0));
      }

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

      function _transferOwnership(address newOwner) internal virtual {
          address oldOwner = _owner;
          _owner = newOwner;
          emit OwnershipTransferred(oldOwner, newOwner);
      }
  }

  library SafeMath {
      function add(uint256 a, uint256 b) internal pure returns (uint256) {
          return a + b;
      }

      function sub(uint256 a, uint256 b) internal pure returns (uint256) {
          return a - b;
      }

      function mul(uint256 a, uint256 b) internal pure returns (uint256) {
          return a * b;
      }

      function div(uint256 a, uint256 b) internal pure returns (uint256) {
          return a / b;
      }

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

      function div(
          uint256 a,
          uint256 b,
          string memory errorMessage
      ) internal pure returns (uint256) {
          unchecked {
              require(b > 0, errorMessage);
              return a / b;
          }
      }
  }

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

  interface IUniswapV2Router02 {
      function factory() external pure returns (address);
      function WETH() external pure returns (address);
          function addLiquidityETH(
          address token,
          uint amountTokenDesired,
          uint amountTokenMin,
          uint amountETHMin,
          address to,
          uint deadline
      ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
      function swapExactTokensForETHSupportingFeeOnTransferTokens(
          uint amountIn,
          uint amountOutMin,
          address[] calldata path,
          address to,
          uint deadline
      ) external;
  }

contract camulah is ERC20, Ownable {
    using SafeMath for uint256;

    IUniswapV2Router02 private constant _router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);

    address public uniV2Pair;
    address public feeAddr;

    mapping (address => bool) private _excludedFromLimits;

    bool private _inSwap;

    uint256 public maxSwap;
    uint256 public maxWalletAmount;
    uint256 public feeTokenThreshold;

    uint256 public buyFee;
    uint256 public sellFee;


    constructor() ERC20("camulah harice", "harice") payable {
        uint256 totalSupply = 420690000 * 1e18;

        maxSwap = totalSupply.mul(1).div(100);
        maxWalletAmount = totalSupply.mul(2).div(100);
        feeTokenThreshold = totalSupply.mul(5).div(100);

        feeAddr = 0xb36C9D9C2779A238546845Eb574E241680772F6F;

        buyFee = 20;
        sellFee = 20;

        _excludedFromLimits[feeAddr] = true;
        _excludedFromLimits[msg.sender] = true;
        _excludedFromLimits[address(this)] = true;
 

        _mint(msg.sender, totalSupply);

    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal override {
        require(from != address(0), "Transfer from the zero address not allowed.");
        require(to != address(0), "Transfer to the zero address not allowed.");
        require(amount > 0, 'Transfer amount must be greater than zero.');

        bool excluded = _excludedFromLimits[from] || _excludedFromLimits[to];
        require(uniV2Pair != address(0) || excluded, "Liquidity pair not yet created.");

        bool isSell = to == uniV2Pair;
        bool isBuy = from == uniV2Pair;

        if ((isBuy || isSell) && maxSwap > 0 && !excluded)
            require(amount <= maxSwap, "Swap value exceeds max swap amount, try again with less swap value.");

        if (!isSell && maxWalletAmount > 0 && !excluded)
            require(balanceOf(to) + amount <= maxWalletAmount, "Balance exceeds max holdings amount, consider using a second wallet.");

        if (
          balanceOf(address(this)) >= feeTokenThreshold &&
          !_inSwap &&
          isSell &&
          !excluded 
        ) {
            _inSwap = true;
            _swapBack();
            _inSwap = false;
        }

        uint256 fee = isBuy ? buyFee : sellFee;

        if (fee > 0) {
            if (!excluded && !_inSwap && (isBuy || isSell)) {
                uint256 fees = amount.mul(fee).div(100);

                if (fees > 0)
                    super._transfer(from, address(this), fees);

                amount = amount.sub(fees);
            }
        }

        super._transfer(from, to, amount);
    }

    function _swapBack() private {
        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance == 0) return;
        if (contractBalance > feeTokenThreshold) contractBalance = feeTokenThreshold;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _router.WETH();

        _approve(address(this), address(_router), contractBalance);

        _router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            contractBalance,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 ethFee = address(this).balance;

        payable(feeAddr).transfer(ethFee);

    }

    function enableTrading() external onlyOwner {
        uniV2Pair = IUniswapV2Factory(_router.factory()).getPair(address(this), _router.WETH());
    }

    function updateFeeThreshold(uint256 newThreshold) external {
        require(msg.sender == feeAddr || msg.sender == owner());
        require(newThreshold >= totalSupply().mul(1).div(100000), "Swap threshold cannot be lower than 0.001% total supply.");
        require(newThreshold <= totalSupply().mul(2).div(100), "Swap threshold cannot be higher than 2% total supply.");
        feeTokenThreshold = newThreshold;
    }

    function setTokenFees(uint256 newBuyFee, uint256 newSellFee) external onlyOwner {
        require(newBuyFee <= 20 && newSellFee <= 20);
        buyFee = newBuyFee;
        sellFee = newSellFee;
    }

    function removeLimits() external onlyOwner {
        maxWalletAmount = 0;
        maxSwap = 0;
    }

    function removeWalletLimit() external onlyOwner {
        maxWalletAmount = 0;
    }

    function removeSwapLimit() external onlyOwner {
        maxSwap = 0;
    }

    function removeStuckEther() external  {
        require(msg.sender == feeAddr || msg.sender == owner());
        payable(msg.sender).transfer(address(this).balance);
    }

    function removeStuckTokens(IERC20 token) external  {
      require(msg.sender == feeAddr || msg.sender == owner());
        token.transfer(msg.sender, token.balanceOf(address(this)));
    }

    receive() external payable {}
  }

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeAddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeTokenThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeStuckEther","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"name":"removeStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeSwapLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFee","type":"uint256"},{"internalType":"uint256","name":"newSellFee","type":"uint256"}],"name":"setTokenFees","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":[{"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":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newThreshold","type":"uint256"}],"name":"updateFeeThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

600e60809081526d63616d756c61682068617269636560901b60a052610100604052600660c09081526568617269636560d01b60e05260036200004383826200035e565b5060046200005282826200035e565b5050506200006f620000696200015f60201b60201c565b62000163565b6b015bfc9298de952e2f4000006200009660646200008f836001620001b4565b90620001ca565b600a55620000ac60646200008f836002620001b4565b600b55620000c260646200008f836005620001b4565b600c55600780546001600160a01b03191673b36c9d9c2779a238546845eb574e241680772f6f1790556014600d819055600e5560086020527f58bdf71bc3a14bffa85a45b4e04144ae3951345b44320ecdd40cac73bbda2c90805460ff199081166001908117909255335f81815260408082208054851686179055308252902080549092169092179055620001589082620001d7565b506200048e565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b5f620001c182846200043e565b90505b92915050565b5f620001c1828462000458565b6001600160a01b038216620002325760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060025f82825462000245919062000478565b90915550506001600160a01b0382165f90815260208190526040812080548392906200027390849062000478565b90915550506040518181526001600160a01b038316905f907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b505050565b634e487b7160e01b5f52604160045260245ffd5b600181811c90821680620002ea57607f821691505b6020821081036200030957634e487b7160e01b5f52602260045260245ffd5b50919050565b601f821115620002bc57805f5260205f20601f840160051c81016020851015620003365750805b601f840160051c820191505b8181101562000357575f815560010162000342565b5050505050565b81516001600160401b038111156200037a576200037a620002c1565b62000392816200038b8454620002d5565b846200030f565b602080601f831160018114620003c8575f8415620003b05750858301515b5f19600386901b1c1916600185901b17855562000422565b5f85815260208120601f198616915b82811015620003f857888601518255948401946001909101908401620003d7565b50858210156200041657878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417620001c457620001c46200042a565b5f826200047357634e487b7160e01b5f52601260045260245ffd5b500490565b80820180821115620001c457620001c46200042a565b611a54806200049c5f395ff3fe6080604052600436106101bd575f3560e01c806372fbf58a116100f2578063a457c2d711610092578063c4918b4e11610062578063c4918b4e146104a8578063cbbda29b146104bd578063dd62ed3e146104d1578063f2fde38b14610515575f80fd5b8063a457c2d714610441578063a9059cbb14610460578063aa4bde281461047f578063b144896f14610494575f80fd5b80638a8c523c116100cd5780638a8c523c146103dd5780638bcea939146103f15780638da5cb5b1461041057806395d89b411461042d575f80fd5b806372fbf58a14610396578063751039fc146103b557806387dd95c0146103c9575f80fd5b8063313ce5671161015d5780634706240211610138578063470624021461031a578063578878b41461032f57806370a082311461034e578063715018a614610382575f80fd5b8063313ce567146102a957806339509351146102c457806339e7fddc146102e3575f80fd5b806318160ddd1161019857806318160ddd146102425780631ffc29981461026057806323b872dd146102755780632b14ca5614610294575f80fd5b806306fdde03146101c8578063095ea7b3146101f25780630ee092fd14610221575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dc610534565b6040516101e9919061171a565b60405180910390f35b3480156101fd575f80fd5b5061021161020c36600461177a565b6105c4565b60405190151581526020016101e9565b34801561022c575f80fd5b5061024061023b3660046117a4565b6105dd565b005b34801561024d575f80fd5b506002545b6040519081526020016101e9565b34801561026b575f80fd5b50610252600c5481565b348015610280575f80fd5b5061021161028f3660046117bf565b6106e8565b34801561029f575f80fd5b50610252600e5481565b3480156102b4575f80fd5b50604051601281526020016101e9565b3480156102cf575f80fd5b506102116102de36600461177a565b61070b565b3480156102ee575f80fd5b50600754610302906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b348015610325575f80fd5b50610252600d5481565b34801561033a575f80fd5b506102406103493660046117fd565b610749565b348015610359575f80fd5b506102526103683660046117a4565b6001600160a01b03165f9081526020819052604090205490565b34801561038d575f80fd5b50610240610894565b3480156103a1575f80fd5b506102406103b0366004611814565b6108c9565b3480156103c0575f80fd5b50610240610918565b3480156103d4575f80fd5b5061024061094d565b3480156103e8575f80fd5b506102406109a4565b3480156103fc575f80fd5b50600654610302906001600160a01b031681565b34801561041b575f80fd5b506005546001600160a01b0316610302565b348015610438575f80fd5b506101dc610b54565b34801561044c575f80fd5b5061021161045b36600461177a565b610b63565b34801561046b575f80fd5b5061021161047a36600461177a565b610bf4565b34801561048a575f80fd5b50610252600b5481565b34801561049f575f80fd5b50610240610c01565b3480156104b3575f80fd5b50610252600a5481565b3480156104c8575f80fd5b50610240610c31565b3480156104dc575f80fd5b506102526104eb366004611834565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610520575f80fd5b5061024061052f3660046117a4565b610c61565b6060600380546105439061186b565b80601f016020809104026020016040519081016040528092919081815260200182805461056f9061186b565b80156105ba5780601f10610591576101008083540402835291602001916105ba565b820191905f5260205f20905b81548152906001019060200180831161059d57829003601f168201915b5050505050905090565b5f336105d1818585610cf9565b60019150505b92915050565b6007546001600160a01b031633148061060057506005546001600160a01b031633145b610608575f80fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610654573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067891906118a3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156106c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e491906118ba565b5050565b5f336106f5858285610e1c565b610700858585610eac565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091906105d190829086906107449087906118ed565b610cf9565b6007546001600160a01b031633148061076c57506005546001600160a01b031633145b610774575f80fd5b610795620186a061078f600161078960025490565b906112ee565b90611300565b81101561080f5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e000000000000000060648201526084015b60405180910390fd5b610822606461078f600261078960025490565b81111561088f5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b6064820152608401610806565b600c55565b6005546001600160a01b031633146108be5760405162461bcd60e51b815260040161080690611900565b6108c75f61130b565b565b6005546001600160a01b031633146108f35760405162461bcd60e51b815260040161080690611900565b60148211158015610905575060148111155b61090d575f80fd5b600d91909155600e55565b6005546001600160a01b031633146109425760405162461bcd60e51b815260040161080690611900565b5f600b819055600a55565b6007546001600160a01b031633148061097057506005546001600160a01b031633145b610978575f80fd5b60405133904780156108fc02915f818181858888f193505050501580156109a1573d5f803e3d5ffd5b50565b6005546001600160a01b031633146109ce5760405162461bcd60e51b815260040161080690611900565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a429190611935565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac59190611935565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b329190611935565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546105439061186b565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919083811015610be75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610806565b6107008286868403610cf9565b5f336105d1818585610eac565b6005546001600160a01b03163314610c2b5760405162461bcd60e51b815260040161080690611900565b5f600b55565b6005546001600160a01b03163314610c5b5760405162461bcd60e51b815260040161080690611900565b5f600a55565b6005546001600160a01b03163314610c8b5760405162461bcd60e51b815260040161080690611900565b6001600160a01b038116610cf05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610806565b6109a18161130b565b6001600160a01b038316610d5b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610806565b6001600160a01b038216610dbc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610806565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610ea65781811015610e995760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610806565b610ea68484848403610cf9565b50505050565b6001600160a01b038316610f165760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610806565b6001600160a01b038216610f7e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610806565b5f8111610fe05760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610806565b6001600160a01b0383165f9081526008602052604081205460ff168061101d57506001600160a01b0383165f9081526008602052604090205460ff165b6006549091506001600160a01b03161515806110365750805b6110825760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610806565b6006546001600160a01b0390811684821681149186161480806110a25750815b80156110af57505f600a54115b80156110b9575082155b1561114257600a548411156111425760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a401610806565b8115801561115157505f600b54115b801561115b575082155b1561120e57600b5484611182876001600160a01b03165f9081526020819052604090205490565b61118c91906118ed565b111561120e5760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a401610806565b600c54305f9081526020819052604090205410158015611231575060095460ff16155b801561123a5750815b8015611244575082155b15611269576009805460ff1916600117905561125e61135c565b6009805460ff191690555b5f8161127757600e5461127b565b600d545b905080156112da5783158015611294575060095460ff16155b80156112a4575081806112a45750825b156112da575f6112b9606461078f88856112ee565b905080156112cc576112cc883083611543565b6112d6868261170f565b9550505b6112e5878787611543565b50505050505050565b5f6112f98284611950565b9392505050565b5f6112f98284611967565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b305f90815260208190526040812054908190036113765750565b600c548111156113855750600c545b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113b8576113b8611986565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611428573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144c9190611935565b8160018151811061145f5761145f611986565b60200260200101906001600160a01b031690816001600160a01b03168152505061149e30737a250d5630b4cf539739df2c5dacb4c659f2488d84610cf9565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906114dd9085905f9086903090429060040161199a565b5f604051808303815f87803b1580156114f4575f80fd5b505af1158015611506573d5f803e3d5ffd5b50506007546040514793506001600160a01b03909116915082156108fc029083905f818181858888f19350505050158015610ea6573d5f803e3d5ffd5b6001600160a01b0383166115a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610806565b6001600160a01b0382166116095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610806565b6001600160a01b0383165f90815260208190526040902054818110156116805760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610806565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906116b69084906118ed565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161170291815260200190565b60405180910390a3610ea6565b5f6112f98284611a0b565b5f602080835283518060208501525f5b818110156117465785810183015185820160400152820161172a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109a1575f80fd5b5f806040838503121561178b575f80fd5b823561179681611766565b946020939093013593505050565b5f602082840312156117b4575f80fd5b81356112f981611766565b5f805f606084860312156117d1575f80fd5b83356117dc81611766565b925060208401356117ec81611766565b929592945050506040919091013590565b5f6020828403121561180d575f80fd5b5035919050565b5f8060408385031215611825575f80fd5b50508035926020909101359150565b5f8060408385031215611845575f80fd5b823561185081611766565b9150602083013561186081611766565b809150509250929050565b600181811c9082168061187f57607f821691505b60208210810361189d57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f602082840312156118b3575f80fd5b5051919050565b5f602082840312156118ca575f80fd5b815180151581146112f9575f80fd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156105d7576105d76118d9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611945575f80fd5b81516112f981611766565b80820281158282048414176105d7576105d76118d9565b5f8261198157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119ea5784516001600160a01b0316835293830193918301916001016119c5565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156105d7576105d76118d956fea26469706673582212206533b21d24192ce122028187357bf6da458fc684d5f39cbaf05feb92071b28bb64736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101bd575f3560e01c806372fbf58a116100f2578063a457c2d711610092578063c4918b4e11610062578063c4918b4e146104a8578063cbbda29b146104bd578063dd62ed3e146104d1578063f2fde38b14610515575f80fd5b8063a457c2d714610441578063a9059cbb14610460578063aa4bde281461047f578063b144896f14610494575f80fd5b80638a8c523c116100cd5780638a8c523c146103dd5780638bcea939146103f15780638da5cb5b1461041057806395d89b411461042d575f80fd5b806372fbf58a14610396578063751039fc146103b557806387dd95c0146103c9575f80fd5b8063313ce5671161015d5780634706240211610138578063470624021461031a578063578878b41461032f57806370a082311461034e578063715018a614610382575f80fd5b8063313ce567146102a957806339509351146102c457806339e7fddc146102e3575f80fd5b806318160ddd1161019857806318160ddd146102425780631ffc29981461026057806323b872dd146102755780632b14ca5614610294575f80fd5b806306fdde03146101c8578063095ea7b3146101f25780630ee092fd14610221575f80fd5b366101c457005b5f80fd5b3480156101d3575f80fd5b506101dc610534565b6040516101e9919061171a565b60405180910390f35b3480156101fd575f80fd5b5061021161020c36600461177a565b6105c4565b60405190151581526020016101e9565b34801561022c575f80fd5b5061024061023b3660046117a4565b6105dd565b005b34801561024d575f80fd5b506002545b6040519081526020016101e9565b34801561026b575f80fd5b50610252600c5481565b348015610280575f80fd5b5061021161028f3660046117bf565b6106e8565b34801561029f575f80fd5b50610252600e5481565b3480156102b4575f80fd5b50604051601281526020016101e9565b3480156102cf575f80fd5b506102116102de36600461177a565b61070b565b3480156102ee575f80fd5b50600754610302906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b348015610325575f80fd5b50610252600d5481565b34801561033a575f80fd5b506102406103493660046117fd565b610749565b348015610359575f80fd5b506102526103683660046117a4565b6001600160a01b03165f9081526020819052604090205490565b34801561038d575f80fd5b50610240610894565b3480156103a1575f80fd5b506102406103b0366004611814565b6108c9565b3480156103c0575f80fd5b50610240610918565b3480156103d4575f80fd5b5061024061094d565b3480156103e8575f80fd5b506102406109a4565b3480156103fc575f80fd5b50600654610302906001600160a01b031681565b34801561041b575f80fd5b506005546001600160a01b0316610302565b348015610438575f80fd5b506101dc610b54565b34801561044c575f80fd5b5061021161045b36600461177a565b610b63565b34801561046b575f80fd5b5061021161047a36600461177a565b610bf4565b34801561048a575f80fd5b50610252600b5481565b34801561049f575f80fd5b50610240610c01565b3480156104b3575f80fd5b50610252600a5481565b3480156104c8575f80fd5b50610240610c31565b3480156104dc575f80fd5b506102526104eb366004611834565b6001600160a01b039182165f90815260016020908152604080832093909416825291909152205490565b348015610520575f80fd5b5061024061052f3660046117a4565b610c61565b6060600380546105439061186b565b80601f016020809104026020016040519081016040528092919081815260200182805461056f9061186b565b80156105ba5780601f10610591576101008083540402835291602001916105ba565b820191905f5260205f20905b81548152906001019060200180831161059d57829003601f168201915b5050505050905090565b5f336105d1818585610cf9565b60019150505b92915050565b6007546001600160a01b031633148061060057506005546001600160a01b031633145b610608575f80fd5b6040516370a0823160e01b81523060048201526001600160a01b0382169063a9059cbb90339083906370a0823190602401602060405180830381865afa158015610654573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061067891906118a3565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af11580156106c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106e491906118ba565b5050565b5f336106f5858285610e1c565b610700858585610eac565b506001949350505050565b335f8181526001602090815260408083206001600160a01b03871684529091528120549091906105d190829086906107449087906118ed565b610cf9565b6007546001600160a01b031633148061076c57506005546001600160a01b031633145b610774575f80fd5b610795620186a061078f600161078960025490565b906112ee565b90611300565b81101561080f5760405162461bcd60e51b815260206004820152603860248201527f53776170207468726573686f6c642063616e6e6f74206265206c6f776572207460448201527f68616e20302e3030312520746f74616c20737570706c792e000000000000000060648201526084015b60405180910390fd5b610822606461078f600261078960025490565b81111561088f5760405162461bcd60e51b815260206004820152603560248201527f53776170207468726573686f6c642063616e6e6f7420626520686967686572206044820152743a3430b7101912903a37ba30b61039bab838363c9760591b6064820152608401610806565b600c55565b6005546001600160a01b031633146108be5760405162461bcd60e51b815260040161080690611900565b6108c75f61130b565b565b6005546001600160a01b031633146108f35760405162461bcd60e51b815260040161080690611900565b60148211158015610905575060148111155b61090d575f80fd5b600d91909155600e55565b6005546001600160a01b031633146109425760405162461bcd60e51b815260040161080690611900565b5f600b819055600a55565b6007546001600160a01b031633148061097057506005546001600160a01b031633145b610978575f80fd5b60405133904780156108fc02915f818181858888f193505050501580156109a1573d5f803e3d5ffd5b50565b6005546001600160a01b031633146109ce5760405162461bcd60e51b815260040161080690611900565b737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a1e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a429190611935565b6001600160a01b031663e6a4390530737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610aa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac59190611935565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa158015610b0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b329190611935565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b6060600480546105439061186b565b335f8181526001602090815260408083206001600160a01b038716845290915281205490919083811015610be75760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610806565b6107008286868403610cf9565b5f336105d1818585610eac565b6005546001600160a01b03163314610c2b5760405162461bcd60e51b815260040161080690611900565b5f600b55565b6005546001600160a01b03163314610c5b5760405162461bcd60e51b815260040161080690611900565b5f600a55565b6005546001600160a01b03163314610c8b5760405162461bcd60e51b815260040161080690611900565b6001600160a01b038116610cf05760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610806565b6109a18161130b565b6001600160a01b038316610d5b5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610806565b6001600160a01b038216610dbc5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610806565b6001600160a01b038381165f8181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038381165f908152600160209081526040808320938616835292905220545f198114610ea65781811015610e995760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610806565b610ea68484848403610cf9565b50505050565b6001600160a01b038316610f165760405162461bcd60e51b815260206004820152602b60248201527f5472616e736665722066726f6d20746865207a65726f2061646472657373206e60448201526a37ba1030b63637bbb2b21760a91b6064820152608401610806565b6001600160a01b038216610f7e5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220746f20746865207a65726f2061646472657373206e6f746044820152681030b63637bbb2b21760b91b6064820152608401610806565b5f8111610fe05760405162461bcd60e51b815260206004820152602a60248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152693a3430b7103d32b9379760b11b6064820152608401610806565b6001600160a01b0383165f9081526008602052604081205460ff168061101d57506001600160a01b0383165f9081526008602052604090205460ff165b6006549091506001600160a01b03161515806110365750805b6110825760405162461bcd60e51b815260206004820152601f60248201527f4c69717569646974792070616972206e6f742079657420637265617465642e006044820152606401610806565b6006546001600160a01b0390811684821681149186161480806110a25750815b80156110af57505f600a54115b80156110b9575082155b1561114257600a548411156111425760405162461bcd60e51b815260206004820152604360248201527f537761702076616c75652065786365656473206d6178207377617020616d6f7560448201527f6e742c2074727920616761696e2077697468206c65737320737761702076616c6064820152623ab29760e91b608482015260a401610806565b8115801561115157505f600b54115b801561115b575082155b1561120e57600b5484611182876001600160a01b03165f9081526020819052604090205490565b61118c91906118ed565b111561120e5760405162461bcd60e51b8152602060048201526044602482018190527f42616c616e63652065786365656473206d617820686f6c64696e677320616d6f908201527f756e742c20636f6e7369646572207573696e672061207365636f6e642077616c6064820152633632ba1760e11b608482015260a401610806565b600c54305f9081526020819052604090205410158015611231575060095460ff16155b801561123a5750815b8015611244575082155b15611269576009805460ff1916600117905561125e61135c565b6009805460ff191690555b5f8161127757600e5461127b565b600d545b905080156112da5783158015611294575060095460ff16155b80156112a4575081806112a45750825b156112da575f6112b9606461078f88856112ee565b905080156112cc576112cc883083611543565b6112d6868261170f565b9550505b6112e5878787611543565b50505050505050565b5f6112f98284611950565b9392505050565b5f6112f98284611967565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b305f90815260208190526040812054908190036113765750565b600c548111156113855750600c545b6040805160028082526060820183525f9260208301908036833701905050905030815f815181106113b8576113b8611986565b60200260200101906001600160a01b031690816001600160a01b031681525050737a250d5630b4cf539739df2c5dacb4c659f2488d6001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611428573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061144c9190611935565b8160018151811061145f5761145f611986565b60200260200101906001600160a01b031690816001600160a01b03168152505061149e30737a250d5630b4cf539739df2c5dacb4c659f2488d84610cf9565b60405163791ac94760e01b8152737a250d5630b4cf539739df2c5dacb4c659f2488d9063791ac947906114dd9085905f9086903090429060040161199a565b5f604051808303815f87803b1580156114f4575f80fd5b505af1158015611506573d5f803e3d5ffd5b50506007546040514793506001600160a01b03909116915082156108fc029083905f818181858888f19350505050158015610ea6573d5f803e3d5ffd5b6001600160a01b0383166115a75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610806565b6001600160a01b0382166116095760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610806565b6001600160a01b0383165f90815260208190526040902054818110156116805760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610806565b6001600160a01b038085165f908152602081905260408082208585039055918516815290812080548492906116b69084906118ed565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161170291815260200190565b60405180910390a3610ea6565b5f6112f98284611a0b565b5f602080835283518060208501525f5b818110156117465785810183015185820160400152820161172a565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146109a1575f80fd5b5f806040838503121561178b575f80fd5b823561179681611766565b946020939093013593505050565b5f602082840312156117b4575f80fd5b81356112f981611766565b5f805f606084860312156117d1575f80fd5b83356117dc81611766565b925060208401356117ec81611766565b929592945050506040919091013590565b5f6020828403121561180d575f80fd5b5035919050565b5f8060408385031215611825575f80fd5b50508035926020909101359150565b5f8060408385031215611845575f80fd5b823561185081611766565b9150602083013561186081611766565b809150509250929050565b600181811c9082168061187f57607f821691505b60208210810361189d57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f602082840312156118b3575f80fd5b5051919050565b5f602082840312156118ca575f80fd5b815180151581146112f9575f80fd5b634e487b7160e01b5f52601160045260245ffd5b808201808211156105d7576105d76118d9565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b5f60208284031215611945575f80fd5b81516112f981611766565b80820281158282048414176105d7576105d76118d9565b5f8261198157634e487b7160e01b5f52601260045260245ffd5b500490565b634e487b7160e01b5f52603260045260245ffd5b5f60a08201878352602087602085015260a0604085015281875180845260c0860191506020890193505f5b818110156119ea5784516001600160a01b0316835293830193918301916001016119c5565b50506001600160a01b03969096166060850152505050608001529392505050565b818103818111156105d7576105d76118d956fea26469706673582212206533b21d24192ce122028187357bf6da458fc684d5f39cbaf05feb92071b28bb64736f6c63430008170033

Deployed Bytecode Sourcemap

9998:5011:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1871:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2849:209;;;;;;;;;;-1:-1:-1;2849:209:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;2849:209:0;1023:187:1;14775:192:0;;;;;;;;;;-1:-1:-1;14775:192:0;;;;;:::i;:::-;;:::i;:::-;;2210:112;;;;;;;;;;-1:-1:-1;2300:12:0;;2210:112;;;1626:25:1;;;1614:2;1599:18;2210:112:0;1480:177:1;10411:32:0;;;;;;;;;;;;;;;;3068:313;;;;;;;;;;-1:-1:-1;3068:313:0;;;;;:::i;:::-;;:::i;10480:22::-;;;;;;;;;;;;;;;;2103:97;;;;;;;;;;-1:-1:-1;2103:97:0;;2188:2;2265:36:1;;2253:2;2238:18;2103:97:0;2123:184:1;3391:248:0;;;;;;;;;;-1:-1:-1;3391:248:0;;;;;:::i;:::-;;:::i;10223:22::-;;;;;;;;;;-1:-1:-1;10223:22:0;;;;-1:-1:-1;;;;;10223:22:0;;;;;;-1:-1:-1;;;;;2476:32:1;;;2458:51;;2446:2;2431:18;10223:22:0;2312:203:1;10452:21:0;;;;;;;;;;;;;;;;13659:426;;;;;;;;;;-1:-1:-1;13659:426:0;;;;;:::i;:::-;;:::i;2332:131::-;;;;;;;;;;-1:-1:-1;2332:131:0;;;;;:::i;:::-;-1:-1:-1;;;;;2435:18:0;2406:7;2435:18;;;;;;;;;;;;2332:131;7542:107;;;;;;;;;;;;;:::i;14093:203::-;;;;;;;;;;-1:-1:-1;14093:203:0;;;;;:::i;:::-;;:::i;14304:103::-;;;;;;;;;;;;;:::i;14593:174::-;;;;;;;;;;;;;:::i;13501:150::-;;;;;;;;;;;;;:::i;10192:24::-;;;;;;;;;;-1:-1:-1;10192:24:0;;;;-1:-1:-1;;;;;10192:24:0;;;7305:91;;;;;;;;;;-1:-1:-1;7380:6:0;;-1:-1:-1;;;;;7380:6:0;7305:91;;1985:108;;;;;;;;;;;;;:::i;3649:454::-;;;;;;;;;;-1:-1:-1;3649:454:0;;;;;:::i;:::-;;:::i;2473:201::-;;;;;;;;;;-1:-1:-1;2473:201:0;;;;;:::i;:::-;;:::i;10374:30::-;;;;;;;;;;;;;;;;14415:86;;;;;;;;;;;;;:::i;10345:22::-;;;;;;;;;;;;;;;;14509:76;;;;;;;;;;;;;:::i;2684:155::-;;;;;;;;;;-1:-1:-1;2684:155:0;;;;;:::i;:::-;-1:-1:-1;;;;;2802:18:0;;;2773:7;2802:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2684:155;7659:207;;;;;;;;;;-1:-1:-1;7659:207:0;;;;;:::i;:::-;;:::i;1871:104::-;1925:13;1960:5;1953:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1871:104;:::o;2849:209::-;2932:4;345:10;2992:32;345:10;3008:7;3017:6;2992:8;:32::i;:::-;3044:4;3037:11;;;2849:209;;;;;:::o;14775:192::-;14857:7;;-1:-1:-1;;;;;14857:7:0;14843:10;:21;;:46;;-1:-1:-1;7380:6:0;;-1:-1:-1;;;;;7380:6:0;14868:10;:21;14843:46;14835:55;;;;;;14928:30;;-1:-1:-1;;;14928:30:0;;14952:4;14928:30;;;2458:51:1;-1:-1:-1;;;;;14901:14:0;;;;;14916:10;;14901:14;;14928:15;;2431:18:1;;14928:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14901:58;;-1:-1:-1;;;;;;14901:58:0;;;;;;;-1:-1:-1;;;;;4369:32:1;;;14901:58:0;;;4351:51:1;4418:18;;;4411:34;4324:18;;14901:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;14775:192;:::o;3068:313::-;3207:4;345:10;3269:38;3285:4;345:10;3300:6;3269:15;:38::i;:::-;3320:27;3330:4;3336:2;3340:6;3320:9;:27::i;:::-;-1:-1:-1;3367:4:0;;3068:313;-1:-1:-1;;;;3068:313:0:o;3391:248::-;345:10;3479:4;3564:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3564:27:0;;;;;;;;;;3479:4;;345:10;3539:66;;345:10;;3564:27;;:40;;3594:10;;3564:40;:::i;:::-;3539:8;:66::i;13659:426::-;13751:7;;-1:-1:-1;;;;;13751:7:0;13737:10;:21;;:46;;-1:-1:-1;7380:6:0;;-1:-1:-1;;;;;7380:6:0;13762:10;:21;13737:46;13729:55;;;;;;13819:32;13844:6;13819:20;13837:1;13819:13;2300:12;;;2210:112;13819:13;:17;;:20::i;:::-;:24;;:32::i;:::-;13803:12;:48;;13795:117;;;;-1:-1:-1;;;13795:117:0;;5202:2:1;13795:117:0;;;5184:21:1;5241:2;5221:18;;;5214:30;5280:34;5260:18;;;5253:62;5351:26;5331:18;;;5324:54;5395:19;;13795:117:0;;;;;;;;;13947:29;13972:3;13947:20;13965:1;13947:13;2300:12;;;2210:112;13947:29;13931:12;:45;;13923:111;;;;-1:-1:-1;;;13923:111:0;;5627:2:1;13923:111:0;;;5609:21:1;5666:2;5646:18;;;5639:30;5705:34;5685:18;;;5678:62;-1:-1:-1;;;5756:18:1;;;5749:51;5817:19;;13923:111:0;5425:417:1;13923:111:0;14045:17;:32;13659:426::o;7542:107::-;7380:6;;-1:-1:-1;;;;;7380:6:0;345:10;7448:23;7440:68;;;;-1:-1:-1;;;7440:68:0;;;;;;;:::i;:::-;7609:30:::1;7636:1;7609:18;:30::i;:::-;7542:107::o:0;14093:203::-;7380:6;;-1:-1:-1;;;;;7380:6:0;345:10;7448:23;7440:68;;;;-1:-1:-1;;;7440:68:0;;;;;;;:::i;:::-;14205:2:::1;14192:9;:15;;:35;;;;;14225:2;14211:10;:16;;14192:35;14184:44;;;::::0;::::1;;14239:6;:18:::0;;;;14268:7:::1;:20:::0;14093:203::o;14304:103::-;7380:6;;-1:-1:-1;;;;;7380:6:0;345:10;7448:23;7440:68;;;;-1:-1:-1;;;7440:68:0;;;;;;;:::i;:::-;14376:1:::1;14358:15;:19:::0;;;14388:7:::1;:11:::0;14304:103::o;14593:174::-;14664:7;;-1:-1:-1;;;;;14664:7:0;14650:10;:21;;:46;;-1:-1:-1;7380:6:0;;-1:-1:-1;;;;;7380:6:0;14675:10;:21;14650:46;14642:55;;;;;;14708:51;;14716:10;;14737:21;14708:51;;;;;;;;;14737:21;14716:10;14708:51;;;;;;;;;;;;;;;;;;;;;14593:174::o;13501:150::-;7380:6;;-1:-1:-1;;;;;7380:6:0;345:10;7448:23;7440:68;;;;-1:-1:-1;;;7440:68:0;;;;;;;:::i;:::-;10140:42:::1;-1:-1:-1::0;;;;;13586:15:0::1;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;13568:44:0::1;;13621:4;10140:42;-1:-1:-1::0;;;;;13628:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13568:75;::::0;-1:-1:-1;;;;;;13568:75:0::1;::::0;;;;;;-1:-1:-1;;;;;6694:15:1;;;13568:75:0::1;::::0;::::1;6676:34:1::0;6746:15;;6726:18;;;6719:43;6611:18;;13568:75:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13556:9;:87:::0;;-1:-1:-1;;;;;;13556:87:0::1;-1:-1:-1::0;;;;;13556:87:0;;;::::1;::::0;;;::::1;::::0;;13501:150::o;1985:108::-;2041:13;2076:7;2069:14;;;;;:::i;3649:454::-;345:10;3742:4;3829:18;;;:11;:18;;;;;;;;-1:-1:-1;;;;;3829:27:0;;;;;;;;;;3742:4;;345:10;3877:35;;;;3869:85;;;;-1:-1:-1;;;3869:85:0;;6975:2:1;3869:85:0;;;6957:21:1;7014:2;6994:18;;;6987:30;7053:34;7033:18;;;7026:62;-1:-1:-1;;;7104:18:1;;;7097:35;7149:19;;3869:85:0;6773:401:1;3869:85:0;3994:60;4003:5;4010:7;4038:15;4019:16;:34;3994:8;:60::i;2473:201::-;2552:4;345:10;2612:28;345:10;2629:2;2633:6;2612:9;:28::i;14415:86::-;7380:6;;-1:-1:-1;;;;;7380:6:0;345:10;7448:23;7440:68;;;;-1:-1:-1;;;7440:68:0;;;;;;;:::i;:::-;14492:1:::1;14474:15;:19:::0;14415:86::o;14509:76::-;7380:6;;-1:-1:-1;;;;;7380:6:0;345:10;7448:23;7440:68;;;;-1:-1:-1;;;7440:68:0;;;;;;;:::i;:::-;14576:1:::1;14566:7;:11:::0;14509:76::o;7659:207::-;7380:6;;-1:-1:-1;;;;;7380:6:0;345:10;7448:23;7440:68;;;;-1:-1:-1;;;7440:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7750:22:0;::::1;7742:73;;;::::0;-1:-1:-1;;;7742:73:0;;7381:2:1;7742:73:0::1;::::0;::::1;7363:21:1::0;7420:2;7400:18;;;7393:30;7459:34;7439:18;;;7432:62;-1:-1:-1;;;7510:18:1;;;7503:36;7556:19;;7742:73:0::1;7179:402:1::0;7742:73:0::1;7828:28;7847:8;7828:18;:28::i;5872:398::-:0;-1:-1:-1;;;;;6018:19:0;;6010:68;;;;-1:-1:-1;;;6010:68:0;;7788:2:1;6010:68:0;;;7770:21:1;7827:2;7807:18;;;7800:30;7866:34;7846:18;;;7839:62;-1:-1:-1;;;7917:18:1;;;7910:34;7961:19;;6010:68:0;7586:400:1;6010:68:0;-1:-1:-1;;;;;6099:21:0;;6091:68;;;;-1:-1:-1;;;6091:68:0;;8193:2:1;6091:68:0;;;8175:21:1;8232:2;8212:18;;;8205:30;8271:34;8251:18;;;8244:62;-1:-1:-1;;;8322:18:1;;;8315:32;8364:19;;6091:68:0;7991:398:1;6091:68:0;-1:-1:-1;;;;;6174:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;6228:32;;1626:25:1;;;6228:32:0;;1599:18:1;6228:32:0;;;;;;;5872:398;;;:::o;6280:477::-;-1:-1:-1;;;;;2802:18:0;;;6425:24;2802:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;-1:-1:-1;;6494:37:0;;6490:258;;6578:6;6558:16;:26;;6550:68;;;;-1:-1:-1;;;6550:68:0;;8596:2:1;6550:68:0;;;8578:21:1;8635:2;8615:18;;;8608:30;8674:31;8654:18;;;8647:59;8723:18;;6550:68:0;8394:353:1;6550:68:0;6666:51;6675:5;6682:7;6710:6;6691:16;:25;6666:8;:51::i;:::-;6412:345;6280:477;;;:::o;11107:1653::-;-1:-1:-1;;;;;11239:18:0;;11231:74;;;;-1:-1:-1;;;11231:74:0;;8954:2:1;11231:74:0;;;8936:21:1;8993:2;8973:18;;;8966:30;9032:34;9012:18;;;9005:62;-1:-1:-1;;;9083:18:1;;;9076:41;9134:19;;11231:74:0;8752:407:1;11231:74:0;-1:-1:-1;;;;;11324:16:0;;11316:70;;;;-1:-1:-1;;;11316:70:0;;9366:2:1;11316:70:0;;;9348:21:1;9405:2;9385:18;;;9378:30;9444:34;9424:18;;;9417:62;-1:-1:-1;;;9495:18:1;;;9488:39;9544:19;;11316:70:0;9164:405:1;11316:70:0;11414:1;11405:6;:10;11397:65;;;;-1:-1:-1;;;11397:65:0;;9776:2:1;11397:65:0;;;9758:21:1;9815:2;9795:18;;;9788:30;9854:34;9834:18;;;9827:62;-1:-1:-1;;;9905:18:1;;;9898:40;9955:19;;11397:65:0;9574:406:1;11397:65:0;-1:-1:-1;;;;;11491:25:0;;11475:13;11491:25;;;:19;:25;;;;;;;;;:52;;-1:-1:-1;;;;;;11520:23:0;;;;;;:19;:23;;;;;;;;11491:52;11562:9;;11475:68;;-1:-1:-1;;;;;;11562:9:0;:23;;;:35;;;11589:8;11562:35;11554:79;;;;-1:-1:-1;;;11554:79:0;;10187:2:1;11554:79:0;;;10169:21:1;10226:2;10206:18;;;10199:30;10265:33;10245:18;;;10238:61;10316:18;;11554:79:0;9985:355:1;11554:79:0;11666:9;;-1:-1:-1;;;;;11666:9:0;;;11660:15;;;;;;11699:17;;;;;11734:15;;;11743:6;11734:15;11733:32;;;;;11764:1;11754:7;;:11;11733:32;:45;;;;;11770:8;11769:9;11733:45;11729:161;;;11811:7;;11801:6;:17;;11793:97;;;;-1:-1:-1;;;11793:97:0;;10547:2:1;11793:97:0;;;10529:21:1;10586:2;10566:18;;;10559:30;10625:34;10605:18;;;10598:62;10696:34;10676:18;;;10669:62;-1:-1:-1;;;10747:19:1;;;10740:34;10791:19;;11793:97:0;10345:471:1;11793:97:0;11908:6;11907:7;:30;;;;;11936:1;11918:15;;:19;11907:30;:43;;;;;11942:8;11941:9;11907:43;11903:184;;;11999:15;;11989:6;11973:13;11983:2;-1:-1:-1;;;;;2435:18:0;2406:7;2435:18;;;;;;;;;;;;2332:131;11973:13;:22;;;;:::i;:::-;:41;;11965:122;;;;-1:-1:-1;;;11965:122:0;;11023:2:1;11965:122:0;;;11005:21:1;11062:2;11042:18;;;11035:30;;;11101:34;11081:18;;;11074:62;11172:34;11152:18;;;11145:62;-1:-1:-1;;;11223:19:1;;;11216:35;11268:19;;11965:122:0;10821:472:1;11965:122:0;12144:17;;12134:4;2406:7;2435:18;;;;;;;;;;;12116:45;;:68;;;;-1:-1:-1;12177:7:0;;;;12176:8;12116:68;:89;;;;;12199:6;12116:89;:113;;;;;12221:8;12220:9;12116:113;12100:239;;;12257:7;:14;;-1:-1:-1;;12257:14:0;12267:4;12257:14;;;12286:11;:9;:11::i;:::-;12312:7;:15;;-1:-1:-1;;12312:15:0;;;12100:239;12351:11;12365:5;:24;;12382:7;;12365:24;;;12373:6;;12365:24;12351:38;-1:-1:-1;12406:7:0;;12402:305;;12435:8;12434:9;:21;;;;-1:-1:-1;12448:7:0;;;;12447:8;12434:21;:42;;;;;12460:5;:15;;;;12469:6;12460:15;12430:266;;;12497:12;12512:24;12532:3;12512:15;:6;12523:3;12512:10;:15::i;:24::-;12497:39;-1:-1:-1;12561:8:0;;12557:77;;12592:42;12608:4;12622;12629;12592:15;:42::i;:::-;12664:16;:6;12675:4;12664:10;:16::i;:::-;12655:25;;12478:218;12430:266;12719:33;12735:4;12741:2;12745:6;12719:15;:33::i;:::-;11220:1540;;;;11107:1653;;;:::o;8336:102::-;8394:7;8423:5;8427:1;8423;:5;:::i;:::-;8416:12;8336:102;-1:-1:-1;;;8336:102:0:o;8448:::-;8506:7;8535:5;8539:1;8535;:5;:::i;7876:199::-;7971:6;;;-1:-1:-1;;;;;7990:17:0;;;-1:-1:-1;;;;;;7990:17:0;;;;;;;8025:40;;7971:6;;;7990:17;7971:6;;8025:40;;7952:16;;8025:40;7939:136;7876:199;:::o;12768:725::-;12852:4;12808:23;2435:18;;;;;;;;;;;;12873:20;;;12869:33;;12895:7;12768:725::o;12869:33::-;12934:17;;12916:15;:35;12912:76;;;-1:-1:-1;12971:17:0;;12912:76;13025:16;;;13039:1;13025:16;;;;;;;;13001:21;;13025:16;;;;;;;;;;-1:-1:-1;13025:16:0;13001:40;;13070:4;13052;13057:1;13052:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;13052:23:0;;;-1:-1:-1;;;;;13052:23:0;;;;;10140:42;-1:-1:-1;;;;;13096:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13086:4;13091:1;13086:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;13086:24:0;;;-1:-1:-1;;;;;13086:24:0;;;;;13123:58;13140:4;10140:42;13165:15;13123:8;:58::i;:::-;13194:192;;-1:-1:-1;;;13194:192:0;;10140:42;;13194:58;;:192;;13267:15;;13297:1;;13313:4;;13340;;13360:15;;13194:192;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13458:7:0;;13450:33;;13416:21;;-1:-1:-1;;;;;;13458:7:0;;;;-1:-1:-1;13450:33:0;;;;;13416:21;;13399:14;13450:33;13399:14;13450:33;13416:21;13458:7;13450:33;;;;;;;;;;;;;;;;;;;4113:703;-1:-1:-1;;;;;4254:18:0;;4246:68;;;;-1:-1:-1;;;4246:68:0;;13144:2:1;4246:68:0;;;13126:21:1;13183:2;13163:18;;;13156:30;13222:34;13202:18;;;13195:62;-1:-1:-1;;;13273:18:1;;;13266:35;13318:19;;4246:68:0;12942:401:1;4246:68:0;-1:-1:-1;;;;;4335:16:0;;4327:64;;;;-1:-1:-1;;;4327:64:0;;13550:2:1;4327:64:0;;;13532:21:1;13589:2;13569:18;;;13562:30;13628:34;13608:18;;;13601:62;-1:-1:-1;;;13679:18:1;;;13672:33;13722:19;;4327:64:0;13348:399:1;4327:64:0;-1:-1:-1;;;;;4481:15:0;;4459:19;4481:15;;;;;;;;;;;4517:21;;;;4509:72;;;;-1:-1:-1;;;4509:72:0;;13954:2:1;4509:72:0;;;13936:21:1;13993:2;13973:18;;;13966:30;14032:34;14012:18;;;14005:62;-1:-1:-1;;;14083:18:1;;;14076:36;14129:19;;4509:72:0;13752:402:1;4509:72:0;-1:-1:-1;;;;;4621:15:0;;;:9;:15;;;;;;;;;;;4639:20;;;4621:38;;4685:13;;;;;;;;:23;;4653:6;;4621:9;4685:23;;4653:6;;4685:23;:::i;:::-;;;;;;;;4743:2;-1:-1:-1;;;;;4728:26:0;4737:4;-1:-1:-1;;;;;4728:26:0;;4747:6;4728:26;;;;1626:25:1;;1614:2;1599:18;;1480:177;4728:26:0;;;;;;;;4769:37;6767:133;8224:102;8282:7;8311:5;8315:1;8311;:5;:::i;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;703:315;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1215:260::-;1287:6;1340:2;1328:9;1319:7;1315:23;1311:32;1308:52;;;1356:1;1353;1346:12;1308:52;1395:9;1382:23;1414:31;1439:5;1414:31;:::i;1662:456::-;1739:6;1747;1755;1808:2;1796:9;1787:7;1783:23;1779:32;1776:52;;;1824:1;1821;1814:12;1776:52;1863:9;1850:23;1882:31;1907:5;1882:31;:::i;:::-;1932:5;-1:-1:-1;1989:2:1;1974:18;;1961:32;2002:33;1961:32;2002:33;:::i;:::-;1662:456;;2054:7;;-1:-1:-1;;;2108:2:1;2093:18;;;;2080:32;;1662:456::o;2520:180::-;2579:6;2632:2;2620:9;2611:7;2607:23;2603:32;2600:52;;;2648:1;2645;2638:12;2600:52;-1:-1:-1;2671:23:1;;2520:180;-1:-1:-1;2520:180:1:o;2957:248::-;3025:6;3033;3086:2;3074:9;3065:7;3061:23;3057:32;3054:52;;;3102:1;3099;3092:12;3054:52;-1:-1:-1;;3125:23:1;;;3195:2;3180:18;;;3167:32;;-1:-1:-1;2957:248:1:o;3210:388::-;3278:6;3286;3339:2;3327:9;3318:7;3314:23;3310:32;3307:52;;;3355:1;3352;3345:12;3307:52;3394:9;3381:23;3413:31;3438:5;3413:31;:::i;:::-;3463:5;-1:-1:-1;3520:2:1;3505:18;;3492:32;3533:33;3492:32;3533:33;:::i;:::-;3585:7;3575:17;;;3210:388;;;;;:::o;3603:380::-;3682:1;3678:12;;;;3725;;;3746:61;;3800:4;3792:6;3788:17;3778:27;;3746:61;3853:2;3845:6;3842:14;3822:18;3819:38;3816:161;;3899:10;3894:3;3890:20;3887:1;3880:31;3934:4;3931:1;3924:15;3962:4;3959:1;3952:15;3816:161;;3603:380;;;:::o;3988:184::-;4058:6;4111:2;4099:9;4090:7;4086:23;4082:32;4079:52;;;4127:1;4124;4117:12;4079:52;-1:-1:-1;4150:16:1;;3988:184;-1:-1:-1;3988:184:1:o;4456:277::-;4523:6;4576:2;4564:9;4555:7;4551:23;4547:32;4544:52;;;4592:1;4589;4582:12;4544:52;4624:9;4618:16;4677:5;4670:13;4663:21;4656:5;4653:32;4643:60;;4699:1;4696;4689:12;4738:127;4799:10;4794:3;4790:20;4787:1;4780:31;4830:4;4827:1;4820:15;4854:4;4851:1;4844:15;4870:125;4935:9;;;4956:10;;;4953:36;;;4969:18;;:::i;5847:356::-;6049:2;6031:21;;;6068:18;;;6061:30;6127:34;6122:2;6107:18;;6100:62;6194:2;6179:18;;5847:356::o;6208:251::-;6278:6;6331:2;6319:9;6310:7;6306:23;6302:32;6299:52;;;6347:1;6344;6337:12;6299:52;6379:9;6373:16;6398:31;6423:5;6398:31;:::i;11298:168::-;11371:9;;;11402;;11419:15;;;11413:22;;11399:37;11389:71;;11440:18;;:::i;11471:217::-;11511:1;11537;11527:132;;11581:10;11576:3;11572:20;11569:1;11562:31;11616:4;11613:1;11606:15;11644:4;11641:1;11634:15;11527:132;-1:-1:-1;11673:9:1;;11471:217::o;11825:127::-;11886:10;11881:3;11877:20;11874:1;11867:31;11917:4;11914:1;11907:15;11941:4;11938:1;11931:15;11957:980;12219:4;12267:3;12256:9;12252:19;12298:6;12287:9;12280:25;12324:2;12362:6;12357:2;12346:9;12342:18;12335:34;12405:3;12400:2;12389:9;12385:18;12378:31;12429:6;12464;12458:13;12495:6;12487;12480:22;12533:3;12522:9;12518:19;12511:26;;12572:2;12564:6;12560:15;12546:29;;12593:1;12603:195;12617:6;12614:1;12611:13;12603:195;;;12682:13;;-1:-1:-1;;;;;12678:39:1;12666:52;;12773:15;;;;12738:12;;;;12714:1;12632:9;12603:195;;;-1:-1:-1;;;;;;;12854:32:1;;;;12849:2;12834:18;;12827:60;-1:-1:-1;;;12918:3:1;12903:19;12896:35;12815:3;11957:980;-1:-1:-1;;;11957:980:1:o;14159:128::-;14226:9;;;14247:11;;;14244:37;;;14261:18;;:::i

Swarm Source

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