ETH Price: $2,298.93 (-3.45%)

Token

Dai Stablecoin (DAI)

Overview

Max Total Supply

105,189.819915566473731239 DAI

Holders

76,253 ( -0.012%)

Market

Price

$1.00 @ 0.000435 ETH (+0.03%)

Onchain Market Cap

$105,175.09

Circulating Supply Market Cap

$5,133,825,800.00

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.285879727230395425 DAI

Value
$0.29 ( ~0.000126145904137016 ETH) [0.0003%]
0x325719a71fbce90e9e16b708e27a77fa116c3774
Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Multi-Collateral Dai, brings a lot of new and exciting features, such as support for new CDP collateral types and Dai Savings Rate.

Market

Volume (24H):$60,701,142.00
Market Capitalization:$5,133,825,800.00
Circulating Supply:5,137,461,030.00 DAI
Market Data Source: Coinmarketcap

Contract Source Code Verified (Exact Match)

Contract Name:
Dai

Compiler Version
v0.6.11+commit.5ef660b1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license
/**
 *Submitted for verification at Nova.Arbiscan.io on 2022-10-28
*/

// SPDX-License-Identifier: AGPL-3.0-or-later

// Copyright (C) 2017, 2018, 2019 dbrock, rain, mrchico
// Copyright (C) 2022 Dai Foundation

// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program.  If not, see <https://www.gnu.org/licenses/>.

pragma solidity ^0.6.11;

// Improved Dai token

contract Dai {

  // --- Auth ---
  mapping (address => uint256) public wards;
  function rely(address usr) external auth {
    wards[usr] = 1;
    emit Rely(usr);
  }
  function deny(address usr) external auth {
    wards[usr] = 0;
    emit Deny(usr);
  }
  modifier auth {
    require(wards[msg.sender] == 1, "Dai/not-authorized");
    _;
  }

  // --- ERC20 Data ---
  string  public constant name     = "Dai Stablecoin";
  string  public constant symbol   = "DAI";
  string  public constant version  = "2";
  uint8   public constant decimals = 18;
  uint256 public totalSupply;

  mapping (address => uint256)                      public balanceOf;
  mapping (address => mapping (address => uint256)) public allowance;
  mapping (address => uint256)                      public nonces;

  event Approval(address indexed owner, address indexed spender, uint256 value);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Rely(address indexed usr);
  event Deny(address indexed usr);

  // --- Math ---
  function _add(uint256 x, uint256 y) internal pure returns (uint256 z) {
    require((z = x + y) >= x);
  }
  function _sub(uint256 x, uint256 y) internal pure returns (uint256 z) {
    require((z = x - y) <= x);
  }

  // --- EIP712 niceties ---
  uint256 public immutable deploymentChainId;
  bytes32 private immutable _DOMAIN_SEPARATOR;
  bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

  constructor() public {
    wards[msg.sender] = 1;
    emit Rely(msg.sender);

    uint256 chainId;
    assembly {chainId := chainid()}
    deploymentChainId = chainId;
    _DOMAIN_SEPARATOR = _calculateDomainSeparator(chainId);
  }

  function _calculateDomainSeparator(uint256 chainId) private view returns (bytes32) {
    return keccak256(
      abi.encode(
        keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
        keccak256(bytes(name)),
        keccak256(bytes(version)),
        chainId,
        address(this)
      )
    );
  }
  function DOMAIN_SEPARATOR() external view returns (bytes32) {
    uint256 chainId;
    assembly {chainId := chainid()}
    return chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId);
  }

  // --- ERC20 Mutations ---
  function transfer(address to, uint256 value) external returns (bool) {
    require(to != address(0) && to != address(this), "Dai/invalid-address");
    uint256 balance = balanceOf[msg.sender];
    require(balance >= value, "Dai/insufficient-balance");

    balanceOf[msg.sender] = balance - value;
    balanceOf[to] += value;

    emit Transfer(msg.sender, to, value);

    return true;
  }
  function transferFrom(address from, address to, uint256 value) external returns (bool) {
    require(to != address(0) && to != address(this), "Dai/invalid-address");
    uint256 balance = balanceOf[from];
    require(balance >= value, "Dai/insufficient-balance");

    if (from != msg.sender) {
      uint256 allowed = allowance[from][msg.sender];
      if (allowed != type(uint256).max) {
        require(allowed >= value, "Dai/insufficient-allowance");

        allowance[from][msg.sender] = allowed - value;
      }
    }

    balanceOf[from] = balance - value;
    balanceOf[to] += value;

    emit Transfer(from, to, value);

    return true;
  }
  function approve(address spender, uint256 value) external returns (bool) {
    allowance[msg.sender][spender] = value;

    emit Approval(msg.sender, spender, value);

    return true;
  }
  function increaseAllowance(address spender, uint256 addedValue) external returns (bool) {
    uint256 newValue = _add(allowance[msg.sender][spender], addedValue);
    allowance[msg.sender][spender] = newValue;

    emit Approval(msg.sender, spender, newValue);

    return true;
  }
  function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
    uint256 allowed = allowance[msg.sender][spender];
    require(allowed >= subtractedValue, "Dai/insufficient-allowance");
    allowed = allowed - subtractedValue;
    allowance[msg.sender][spender] = allowed;

    emit Approval(msg.sender, spender, allowed);

    return true;
  }

  // --- Mint/Burn ---
  function mint(address to, uint256 value) external auth {
    require(to != address(0) && to != address(this), "Dai/invalid-address");
    balanceOf[to] = balanceOf[to] + value; // note: we don't need an overflow check here b/c balanceOf[to] <= totalSupply and there is an overflow check below
    totalSupply   = _add(totalSupply, value);

    emit Transfer(address(0), to, value);
  }
  function burn(address from, uint256 value) external {
    uint256 balance = balanceOf[from];
    require(balance >= value, "Dai/insufficient-balance");

    if (from != msg.sender && wards[msg.sender] != 1) {
      uint256 allowed = allowance[from][msg.sender];
      if (allowed != type(uint256).max) {
        require(allowed >= value, "Dai/insufficient-allowance");

        allowance[from][msg.sender] = allowed - value;
      }
    }

    balanceOf[from] = balance - value; // note: we don't need overflow checks b/c require(balance >= value) and balance <= totalSupply
    totalSupply     = totalSupply - value;

    emit Transfer(from, address(0), value);
  }

  // --- Approve by signature ---
  function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external {
    require(block.timestamp <= deadline, "Dai/permit-expired");

    uint256 chainId;
    assembly {chainId := chainid()}

    bytes32 digest =
      keccak256(abi.encodePacked(
          "\x19\x01",
          chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId),
          keccak256(abi.encode(
            PERMIT_TYPEHASH,
            owner,
            spender,
            value,
            nonces[owner]++,
            deadline
          ))
      ));

    require(owner != address(0) && owner == ecrecover(digest, v, r, s), "Dai/invalid-permit");

    allowance[owner][spender] = value;
    emit Approval(owner, spender, value);
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Deny","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"usr","type":"address"}],"name":"Rely","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"deny","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deploymentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"usr","type":"address"}],"name":"rely","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":"value","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"wards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

60c060405234801561001057600080fd5b503360008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a2466080819052610062816001600160e01b0361006b16565b60a0525061013f565b600060405180806114af60529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b60805160a05161133e6101716000398061077f5280610f2b52508061074a5280610e855280610ef6525061133e6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146103b0578063a9059cbb146103dc578063bf353dbb14610408578063cd0d00961461042e578063d505accf14610436578063dd62ed3e1461048757610142565b806370a082311461030a5780637ecebe001461033057806395d89b41146103565780639c52a7f11461035e5780639dc29fac1461038457610142565b8063313ce5671161010a578063313ce5671461025c5780633644e5151461027a578063395093511461028257806340c10f19146102ae57806354fd4d50146102dc57806365fae35e146102e457610142565b806306fdde0314610147578063095ea7b3146101c457806318160ddd1461020457806323b872dd1461021e57806330adf81f14610254575b600080fd5b61014f6104b5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b0381351690602001356104df565b604080519115158252519081900360200190f35b61020c610534565b60408051918252519081900360200190f35b6101f06004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561053a565b61020c610725565b610264610740565b6040805160ff9092168252519081900360200190f35b61020c610745565b6101f06004803603604081101561029857600080fd5b506001600160a01b0381351690602001356107a5565b6102da600480360360408110156102c457600080fd5b506001600160a01b03813516906020013561082c565b005b61014f61094e565b6102da600480360360208110156102fa57600080fd5b50356001600160a01b031661096b565b61020c6004803603602081101561032057600080fd5b50356001600160a01b0316610a09565b61020c6004803603602081101561034657600080fd5b50356001600160a01b0316610a1b565b61014f610a2d565b6102da6004803603602081101561037457600080fd5b50356001600160a01b0316610a4c565b6102da6004803603604081101561039a57600080fd5b506001600160a01b038135169060200135610ae9565b6101f0600480360360408110156103c657600080fd5b506001600160a01b038135169060200135610c7b565b6101f0600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610d4c565b61020c6004803603602081101561041e57600080fd5b50356001600160a01b0316610e71565b61020c610e83565b6102da600480360360e081101561044c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610ea7565b61020c6004803603604081101561049d57600080fd5b506001600160a01b0381358116916020013516611123565b6040518060400160405280600e81526020016d2230b49029ba30b13632b1b7b4b760911b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390926000805160206112e9833981519152928290030190a35060015b92915050565b60015481565b60006001600160a01b0383161580159061055d57506001600160a01b0383163014155b6105a4576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b0384166000908152600260205260409020548281101561060d576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b03851633146106c7576001600160a01b038516600090815260036020908152604080832033845290915290205460001981146106c5578381101561069c576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0386166000908152600360209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526002602090815260408083208887039055938816808352918490208054880190558351878152935191936000805160206112c9833981519152929081900390910190a3506001949350505050565b60405180605261122582396052019050604051809103902081565b601281565b6000467f0000000000000000000000000000000000000000000000000000000000000000811461077d5761077881611140565b61079f565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b3360009081526003602090815260408083206001600160a01b038616845290915281205481906107d59084611214565b3360008181526003602090815260408083206001600160a01b038a16808552908352928190208590558051858152905194955091936000805160206112e98339815191529281900390910190a35060019392505050565b33600090815260208190526040902054600114610885576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038216158015906108a657506001600160a01b0382163014155b6108ed576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090208054820190556001546109189082611214565b6001556040805182815290516001600160a01b038416916000916000805160206112c98339815191529181900360200190a35050565b604051806040016040528060018152602001601960f91b81525081565b336000908152602081905260409020546001146109c4576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b60026020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020016244414960e81b81525081565b33600090815260208190526040902054600114610aa5576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b03821660009081526002602052604090205481811015610b52576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b0383163314801590610b7b575033600090815260208190526040902054600114155b15610c2a576001600160a01b03831660009081526003602090815260408083203384529091529020546000198114610c285782811015610bff576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0384166000908152600360209081526040808320338452909152902083820390555b505b6001600160a01b03831660008181526002602090815260408083208686039055600180548790039055805186815290519293926000805160206112c9833981519152929181900390910190a3505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610cf1576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b3360008181526003602090815260408083206001600160a01b038916808552908352928190209487900394859055805185815290519293926000805160206112e9833981519152929181900390910190a35060019392505050565b60006001600160a01b03831615801590610d6f57506001600160a01b0383163014155b610db6576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b3360009081526002602052604090205482811015610e16576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b33600081815260026020908152604080832087860390556001600160a01b03881680845292819020805488019055805187815290519293926000805160206112c9833981519152929181900390910190a35060019392505050565b60006020819052908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000000081565b83421115610ef1576040805162461bcd60e51b815260206004820152601260248201527111185a4bdc195c9b5a5d0b595e1c1a5c995960721b604482015290519081900360640190fd5b4660007f00000000000000000000000000000000000000000000000000000000000000008214610f2957610f2482611140565b610f4b565b7f00000000000000000000000000000000000000000000000000000000000000005b6040518060526112258239604080519182900360520182206001600160a01b03808f166000818152600460209081529085902080546001810190915581870194909452858501829052918f166060860152608085018e905260a085019290925260c08085018d90528351808603909101815260e08501845280519082012061190160f01b6101008601526101028501969096526101228085019690965282518085039096018652610142909301909152835193909101929092209250501580159061108757506040805160008152602080820180845284905260ff8816828401526060820187905260808201869052915160019260a0808401939192601f1981019281900390910190855afa158015611068573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6110cd576040805162461bcd60e51b815260206004820152601260248201527111185a4bda5b9d985b1a590b5c195c9b5a5d60721b604482015290519081900360640190fd5b6001600160a01b03808a166000818152600360209081526040808320948d16808452948252918290208b905581518b815291516000805160206112e98339815191529281900390910190a3505050505050505050565b600360209081526000928352604080842090915290825290205481565b6000604051808061127760529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b8082018281101561052e57600080fdfe5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220c10a8f863458f6eaf33751a084e6c9f731275ed9c3b4b35baeb97c5150f7db5264736f6c634300060b0033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146103b0578063a9059cbb146103dc578063bf353dbb14610408578063cd0d00961461042e578063d505accf14610436578063dd62ed3e1461048757610142565b806370a082311461030a5780637ecebe001461033057806395d89b41146103565780639c52a7f11461035e5780639dc29fac1461038457610142565b8063313ce5671161010a578063313ce5671461025c5780633644e5151461027a578063395093511461028257806340c10f19146102ae57806354fd4d50146102dc57806365fae35e146102e457610142565b806306fdde0314610147578063095ea7b3146101c457806318160ddd1461020457806323b872dd1461021e57806330adf81f14610254575b600080fd5b61014f6104b5565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610189578181015183820152602001610171565b50505050905090810190601f1680156101b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101f0600480360360408110156101da57600080fd5b506001600160a01b0381351690602001356104df565b604080519115158252519081900360200190f35b61020c610534565b60408051918252519081900360200190f35b6101f06004803603606081101561023457600080fd5b506001600160a01b0381358116916020810135909116906040013561053a565b61020c610725565b610264610740565b6040805160ff9092168252519081900360200190f35b61020c610745565b6101f06004803603604081101561029857600080fd5b506001600160a01b0381351690602001356107a5565b6102da600480360360408110156102c457600080fd5b506001600160a01b03813516906020013561082c565b005b61014f61094e565b6102da600480360360208110156102fa57600080fd5b50356001600160a01b031661096b565b61020c6004803603602081101561032057600080fd5b50356001600160a01b0316610a09565b61020c6004803603602081101561034657600080fd5b50356001600160a01b0316610a1b565b61014f610a2d565b6102da6004803603602081101561037457600080fd5b50356001600160a01b0316610a4c565b6102da6004803603604081101561039a57600080fd5b506001600160a01b038135169060200135610ae9565b6101f0600480360360408110156103c657600080fd5b506001600160a01b038135169060200135610c7b565b6101f0600480360360408110156103f257600080fd5b506001600160a01b038135169060200135610d4c565b61020c6004803603602081101561041e57600080fd5b50356001600160a01b0316610e71565b61020c610e83565b6102da600480360360e081101561044c57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610ea7565b61020c6004803603604081101561049d57600080fd5b506001600160a01b0381358116916020013516611123565b6040518060400160405280600e81526020016d2230b49029ba30b13632b1b7b4b760911b81525081565b3360008181526003602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390926000805160206112e9833981519152928290030190a35060015b92915050565b60015481565b60006001600160a01b0383161580159061055d57506001600160a01b0383163014155b6105a4576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b0384166000908152600260205260409020548281101561060d576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b03851633146106c7576001600160a01b038516600090815260036020908152604080832033845290915290205460001981146106c5578381101561069c576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0386166000908152600360209081526040808320338452909152902084820390555b505b6001600160a01b0380861660008181526002602090815260408083208887039055938816808352918490208054880190558351878152935191936000805160206112c9833981519152929081900390910190a3506001949350505050565b60405180605261122582396052019050604051809103902081565b601281565b6000467f000000000000000000000000000000000000000000000000000000000000a4ba811461077d5761077881611140565b61079f565b7f0ae683d31980dfc7ea418b48aaaa6811348e3e2118d7c8614bb7456ec780f6605b91505090565b3360009081526003602090815260408083206001600160a01b038616845290915281205481906107d59084611214565b3360008181526003602090815260408083206001600160a01b038a16808552908352928190208590558051858152905194955091936000805160206112e98339815191529281900390910190a35060019392505050565b33600090815260208190526040902054600114610885576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038216158015906108a657506001600160a01b0382163014155b6108ed576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090208054820190556001546109189082611214565b6001556040805182815290516001600160a01b038416916000916000805160206112c98339815191529181900360200190a35050565b604051806040016040528060018152602001601960f91b81525081565b336000908152602081905260409020546001146109c4576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b03811660008181526020819052604080822060019055517fdd0e34038ac38b2a1ce960229778ac48a8719bc900b6c4f8d0475c6e8b385a609190a250565b60026020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020016244414960e81b81525081565b33600090815260208190526040902054600114610aa5576040805162461bcd60e51b815260206004820152601260248201527111185a4bdb9bdd0b585d5d1a1bdc9a5e995960721b604482015290519081900360640190fd5b6001600160a01b038116600081815260208190526040808220829055517f184450df2e323acec0ed3b5c7531b81f9b4cdef7914dfd4c0a4317416bb5251b9190a250565b6001600160a01b03821660009081526002602052604090205481811015610b52576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b6001600160a01b0383163314801590610b7b575033600090815260208190526040902054600114155b15610c2a576001600160a01b03831660009081526003602090815260408083203384529091529020546000198114610c285782811015610bff576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b6001600160a01b0384166000908152600360209081526040808320338452909152902083820390555b505b6001600160a01b03831660008181526002602090815260408083208686039055600180548790039055805186815290519293926000805160206112c9833981519152929181900390910190a3505050565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610cf1576040805162461bcd60e51b815260206004820152601a6024820152794461692f696e73756666696369656e742d616c6c6f77616e636560301b604482015290519081900360640190fd5b3360008181526003602090815260408083206001600160a01b038916808552908352928190209487900394859055805185815290519293926000805160206112e9833981519152929181900390910190a35060019392505050565b60006001600160a01b03831615801590610d6f57506001600160a01b0383163014155b610db6576040805162461bcd60e51b81526020600482015260136024820152724461692f696e76616c69642d6164647265737360681b604482015290519081900360640190fd5b3360009081526002602052604090205482811015610e16576040805162461bcd60e51b81526020600482015260186024820152774461692f696e73756666696369656e742d62616c616e636560401b604482015290519081900360640190fd5b33600081815260026020908152604080832087860390556001600160a01b03881680845292819020805488019055805187815290519293926000805160206112c9833981519152929181900390910190a35060019392505050565b60006020819052908152604090205481565b7f000000000000000000000000000000000000000000000000000000000000a4ba81565b83421115610ef1576040805162461bcd60e51b815260206004820152601260248201527111185a4bdc195c9b5a5d0b595e1c1a5c995960721b604482015290519081900360640190fd5b4660007f000000000000000000000000000000000000000000000000000000000000a4ba8214610f2957610f2482611140565b610f4b565b7f0ae683d31980dfc7ea418b48aaaa6811348e3e2118d7c8614bb7456ec780f6605b6040518060526112258239604080519182900360520182206001600160a01b03808f166000818152600460209081529085902080546001810190915581870194909452858501829052918f166060860152608085018e905260a085019290925260c08085018d90528351808603909101815260e08501845280519082012061190160f01b6101008601526101028501969096526101228085019690965282518085039096018652610142909301909152835193909101929092209250501580159061108757506040805160008152602080820180845284905260ff8816828401526060820187905260808201869052915160019260a0808401939192601f1981019281900390910190855afa158015611068573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b0316145b6110cd576040805162461bcd60e51b815260206004820152601260248201527111185a4bda5b9d985b1a590b5c195c9b5a5d60721b604482015290519081900360640190fd5b6001600160a01b03808a166000818152600360209081526040808320948d16808452948252918290208b905581518b815291516000805160206112e98339815191529281900390910190a3505050505050505050565b600360209081526000928352604080842090915290825290205481565b6000604051808061127760529139604080519182900360520182208282018252600e83526d2230b49029ba30b13632b1b7b4b760911b6020938401528151808301835260018152601960f91b908401528151808401919091527f0b1461ddc0c1d5ded79a1db0f74dae949050a7c0b28728c724b24958c27a328b818301527fad7c5bef027816a800da1736444fb58a807ef4c9603b7848673f7e3a68eb14a56060820152608081018690523060a0808301919091528251808303909101815260c09091019091528051910120915050919050565b8082018281101561052e57600080fdfe5065726d69742861646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220c10a8f863458f6eaf33751a084e6c9f731275ed9c3b4b35baeb97c5150f7db5264736f6c634300060b0033

Deployed Bytecode Sourcemap

881:6368:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1271:51;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4401:194;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4401:194:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1457:26;;;:::i;:::-;;;;;;;;;;;;;;;;3726:671;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3726:671:0;;;;;;;;;;;;;;;;;:::i;2304:137::-;;;:::i;1415:37::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3061:224;;;:::i;4599:289::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4599:289:0;;;;;;;;:::i;5309:391::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5309:391:0;;;;;;;;:::i;:::-;;1372:38;;;:::i;966:89::-;;;;;;;;;;;;;;;;-1:-1:-1;966:89:0;-1:-1:-1;;;;;966:89:0;;:::i;1490:66::-;;;;;;;;;;;;;;;;-1:-1:-1;1490:66:0;-1:-1:-1;;;;;1490:66:0;;:::i;1632:63::-;;;;;;;;;;;;;;;;-1:-1:-1;1632:63:0;-1:-1:-1;;;;;1632:63:0;;:::i;1327:40::-;;;:::i;1059:89::-;;;;;;;;;;;;;;;;-1:-1:-1;1059:89:0;-1:-1:-1;;;;;1059:89:0;;:::i;5704:683::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5704:683:0;;;;;;;;:::i;4892:387::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4892:387:0;;;;;;;;:::i;3321:401::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3321:401:0;;;;;;;;:::i;920:41::-;;;;;;;;;;;;;;;;-1:-1:-1;920:41:0;-1:-1:-1;;;;;920:41:0;;:::i;2209:42::-;;;:::i;6428:818::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6428:818:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1561:66::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1561:66:0;;;;;;;;;;:::i;1271:51::-;;;;;;;;;;;;;;-1:-1:-1;;;1271:51:0;;;;:::o;4401:194::-;4491:10;4468:4;4481:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;4481:30:0;;;;;;;;;;;:38;;;4533:36;;;;;;;4468:4;;4481:30;;4491:10;;-1:-1:-1;;;;;;;;;;;4533:36:0;;;;;;;-1:-1:-1;4585:4:0;4401:194;;;;;:::o;1457:26::-;;;;:::o;3726:671::-;3807:4;-1:-1:-1;;;;;3828:16:0;;;;;;:39;;-1:-1:-1;;;;;;3848:19:0;;3862:4;3848:19;;3828:39;3820:71;;;;;-1:-1:-1;;;3820:71:0;;;;;;;;;;;;-1:-1:-1;;;3820:71:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3916:15:0;;3898;3916;;;:9;:15;;;;;;3946:16;;;;3938:53;;;;;-1:-1:-1;;;3938:53:0;;;;;;;;;;;;-1:-1:-1;;;3938:53:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4004:18:0;;4012:10;4004:18;4000:262;;-1:-1:-1;;;;;4051:15:0;;4033;4051;;;:9;:15;;;;;;;;4067:10;4051:27;;;;;;;;-1:-1:-1;;4091:28:0;;4087:168;;4151:5;4140:7;:16;;4132:55;;;;;-1:-1:-1;;;4132:55:0;;;;;;;;;;;;-1:-1:-1;;;4132:55:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;4200:15:0;;;;;;:9;:15;;;;;;;;4216:10;4200:27;;;;;;;4230:15;;;4200:45;;4087:168;4000:262;;-1:-1:-1;;;;;4270:15:0;;;;;;;:9;:15;;;;;;;;4288;;;4270:33;;4310:13;;;;;;;;;;:22;;;;;;4346:25;;;;;;;4310:13;;-1:-1:-1;;;;;;;;;;;4346:25:0;;;;;;;;;;-1:-1:-1;4387:4:0;;3726:671;-1:-1:-1;;;;3726:671:0:o;2304:137::-;2346:95;;;;;;;;;;;;;;;;;;2304:137;:::o;1415:37::-;1450:2;1415:37;:::o;3061:224::-;3112:7;3171:9;3205:17;3194:28;;:85;;3245:34;3271:7;3245:25;:34::i;:::-;3194:85;;;3225:17;3194:85;3187:92;;;3061:224;:::o;4599:289::-;4728:10;4681:4;4718:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;4718:30:0;;;;;;;;;;4681:4;;4713:48;;4750:10;4713:4;:48::i;:::-;4778:10;4768:21;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;4768:30:0;;;;;;;;;;;;:41;;;4823:39;;;;;;;4694:67;;-1:-1:-1;4768:30:0;;-1:-1:-1;;;;;;;;;;;4823:39:0;;;;;;;;;-1:-1:-1;4878:4:0;;4599:289;-1:-1:-1;;;4599:289:0:o;5309:391::-;1187:10;1181:5;:17;;;;;;;;;;;1202:1;1181:22;1173:53;;;;;-1:-1:-1;;;1173:53:0;;;;;;;;;;;;-1:-1:-1;;;1173:53:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5379:16:0;::::1;::::0;;::::1;::::0;:39:::1;;-1:-1:-1::0;;;;;;5399:19:0;::::1;5413:4;5399:19;;5379:39;5371:71;;;::::0;;-1:-1:-1;;;5371:71:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;5371:71:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;5465:13:0;::::1;;::::0;;;:9:::1;:13;::::0;;;;;;:21;::::1;5449:37:::0;;-1:-1:-1;5630:11:0;5625:24:::1;::::0;5481:5;5625:4:::1;:24::i;:::-;5609:11;:40:::0;5663:31:::1;::::0;;;;;;;-1:-1:-1;;;;;5663:31:0;::::1;::::0;5680:1:::1;::::0;-1:-1:-1;;;;;;;;;;;5663:31:0;;;;::::1;::::0;;::::1;5309:391:::0;;:::o;1372:38::-;;;;;;;;;;;;;;-1:-1:-1;;;1372:38:0;;;;:::o;966:89::-;1187:10;1181:5;:17;;;;;;;;;;;1202:1;1181:22;1173:53;;;;;-1:-1:-1;;;1173:53:0;;;;;;;;;;;;-1:-1:-1;;;1173:53:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;1014:10:0;::::1;:5;:10:::0;;;::::1;::::0;;;;;;;1027:1:::1;1014:14:::0;;1040:9;::::1;::::0;1014:5;1040:9:::1;966:89:::0;:::o;1490:66::-;;;;;;;;;;;;;:::o;1632:63::-;;;;;;;;;;;;;:::o;1327:40::-;;;;;;;;;;;;;;-1:-1:-1;;;1327:40:0;;;;:::o;1059:89::-;1187:10;1181:5;:17;;;;;;;;;;;1202:1;1181:22;1173:53;;;;;-1:-1:-1;;;1173:53:0;;;;;;;;;;;;-1:-1:-1;;;1173:53:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;1107:10:0;::::1;1120:1;1107:10:::0;;;::::1;::::0;;;;;;;:14;;;1133:9;::::1;::::0;1120:1;1133:9:::1;1059:89:::0;:::o;5704:683::-;-1:-1:-1;;;;;5781:15:0;;5763;5781;;;:9;:15;;;;;;5811:16;;;;5803:53;;;;;-1:-1:-1;;;5803:53:0;;;;;;;;;;;;-1:-1:-1;;;5803:53:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;5869:18:0;;5877:10;5869:18;;;;:44;;-1:-1:-1;5897:10:0;5891:5;:17;;;;;;;;;;;5912:1;5891:22;;5869:44;5865:288;;;-1:-1:-1;;;;;5942:15:0;;5924;5942;;;:9;:15;;;;;;;;5958:10;5942:27;;;;;;;;-1:-1:-1;;5982:28:0;;5978:168;;6042:5;6031:7;:16;;6023:55;;;;;-1:-1:-1;;;6023:55:0;;;;;;;;;;;;-1:-1:-1;;;6023:55:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;6091:15:0;;;;;;:9;:15;;;;;;;;6107:10;6091:27;;;;;;;6121:15;;;6091:45;;5978:168;5865:288;;-1:-1:-1;;;;;6161:15:0;;;;;;:9;:15;;;;;;;;6179;;;6161:33;;6315:11;;;:19;;;6297:37;;6348:33;;;;;;;6161:15;;;-1:-1:-1;;;;;;;;;;;6348:33:0;;;;;;;;;;5704:683;;;:::o;4892:387::-;5020:10;4979:4;5010:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;5010:30:0;;;;;;;;;;5055:26;;;;5047:65;;;;;-1:-1:-1;;;5047:65:0;;;;;;;;;;;;-1:-1:-1;;;5047:65:0;;;;;;;;;;;;;;;5171:10;5161:21;;;;:9;:21;;;;;;;;-1:-1:-1;;;;;5161:30:0;;;;;;;;;;;;5129:25;;;;5161:40;;;;5215:38;;;;;;;5161:30;;5171:10;-1:-1:-1;;;;;;;;;;;5215:38:0;;;;;;;;;;-1:-1:-1;5269:4:0;;4892:387;-1:-1:-1;;;4892:387:0:o;3321:401::-;3384:4;-1:-1:-1;;;;;3405:16:0;;;;;;:39;;-1:-1:-1;;;;;;3425:19:0;;3439:4;3425:19;;3405:39;3397:71;;;;;-1:-1:-1;;;3397:71:0;;;;;;;;;;;;-1:-1:-1;;;3397:71:0;;;;;;;;;;;;;;;3503:10;3475:15;3493:21;;;:9;:21;;;;;;3529:16;;;;3521:53;;;;;-1:-1:-1;;;3521:53:0;;;;;;;;;;;;-1:-1:-1;;;3521:53:0;;;;;;;;;;;;;;;3593:10;3583:21;;;;:9;:21;;;;;;;;3607:15;;;3583:39;;-1:-1:-1;;;;;3629:13:0;;;;;;;;;:22;;;;;;3665:31;;;;;;;3629:13;;3593:10;-1:-1:-1;;;;;;;;;;;3665:31:0;;;;;;;;;;-1:-1:-1;3712:4:0;;3321:401;-1:-1:-1;;;3321:401:0:o;920:41::-;;;;;;;;;;;;;;:::o;2209:42::-;;;:::o;6428:818::-;6583:8;6564:15;:27;;6556:58;;;;;-1:-1:-1;;;6556:58:0;;;;;;;;;;;;-1:-1:-1;;;6556:58:0;;;;;;;;;;;;;;;6666:9;6623:15;6781:17;6770:28;;:85;;6821:34;6847:7;6821:25;:34::i;:::-;6770:85;;;6801:17;6770:85;2346:95;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6995:13:0;;;;;;;:6;:13;;;;;;;;:15;;;;;;;;6878:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6868:179;;;;;;-1:-1:-1;;;6718:338:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6708:349;;;;;;;;;;;-1:-1:-1;;7074:19:0;;;;:58;;-1:-1:-1;7106:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7106:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7097:35:0;:5;-1:-1:-1;;;;;7097:35:0;;7074:58;7066:89;;;;;-1:-1:-1;;;7066:89:0;;;;;;;;;;;;-1:-1:-1;;;7066:89:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;7164:16:0;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;7209:31;;;;;;;-1:-1:-1;;;;;;;;;;;7209:31:0;;;;;;;;;6428:818;;;;;;;;;:::o;1561:66::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;2693:364::-;2767:7;2829:95;;;;;;;;;;;;;;;;;;;2951:4;;;;;;;;-1:-1:-1;;;2951:4:0;;;;;2984:7;;;;;;;;;;-1:-1:-1;;;2984:7:0;;;;2808:236;;;;;;;;;2935:22;2808:236;;;;2968:25;2808:236;;;;;;;;;;3030:4;2808:236;;;;;;;;;;;;;;;;;;;;;;;;;2790:261;;;;;;-1:-1:-1;;2693:364:0;;;:::o;1953:108::-;2043:5;;;2038:16;;;;2030:25;;;;

Swarm Source

ipfs://c10a8f863458f6eaf33751a084e6c9f731275ed9c3b4b35baeb97c5150f7db52
[ 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.