ERC-20
Overview
Max Total Supply
970,501,601.336351496530788983 PPR
Holders
7,988
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
PapyrusToken
Compiler Version
v0.4.26+commit.4563c3fc
Optimization Enabled:
Yes with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-05-14 */ pragma solidity ^0.4.24; /// @title ERC-20 interface /// @dev Full ERC-20 interface is described at https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md. interface ERC20 { event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); function transfer(address to, uint256 value) external returns (bool); function transferFrom(address from, address to, uint256 value) external returns (bool); function approve(address spender, uint256 value) external returns (bool); function totalSupply() external view returns (uint256); function balanceOf(address owner) external view returns (uint256); function allowance(address owner, address spender) external view returns (uint256); } /// @title ERC-677 (excluding ERC-20) interface /// @dev Full ERC-677 interface is discussed at https://github.com/ethereum/EIPs/issues/677. interface ERC677 { event Transfer(address indexed from, address indexed to, uint256 value, bytes data); function transferAndCall(address to, uint256 value, bytes data) external returns (bool); } /// @title ERC-677 mint/burn/claim extension interface /// @dev Extension of ERC-677 interface for allowing using a token in Token Bridge. interface ERC677Bridgeable { event Mint(address indexed receiver, uint256 value); event Burn(address indexed burner, uint256 value); function mint(address receiver, uint256 value) external returns (bool); function burn(uint256 value) external; function claimTokens(address token, address to) external; } /// @title SafeMath /// @dev Math operations with safety checks that throw on error. library SafeMath { function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 c = a * b; assert(c / a == b); return c; } function div(uint256 a, uint256 b) internal pure returns (uint256) { // assert(b > 0); // Solidity automatically throws when dividing by 0 uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { assert(b <= a); return a - b; } function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; assert(c >= a); return c; } } /// @title SafeOwnable /// @dev The SafeOwnable contract has an owner address, and provides basic authorization control /// functions, this simplifies the implementation of "user permissions". contract SafeOwnable { // EVENTS event OwnershipProposed(address indexed previousOwner, address indexed newOwner); event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); // PUBLIC FUNCTIONS /// @dev The SafeOwnable constructor sets the original `owner` of the contract to the sender account. constructor() internal { _owner = msg.sender; emit OwnershipTransferred(address(0), _owner); } /// @dev Allows the current owner to propose control of the contract to a new owner. /// @param newOwner The address to propose ownership to. function proposeOwnership(address newOwner) public onlyOwner { require(newOwner != address(0) && newOwner != _owner); _ownerCandidate = newOwner; emit OwnershipProposed(_owner, _ownerCandidate); } /// @dev Allows the current owner candidate to accept proposed ownership and set actual owner of a contract. function acceptOwnership() public onlyOwnerCandidate { emit OwnershipTransferred(_owner, _ownerCandidate); _owner = _ownerCandidate; _ownerCandidate = address(0); } /// @dev Returns the address of the owner. function owner() public view returns (address) { return _owner; } /// @dev Returns the address of the owner candidate. function ownerCandidate() public view returns (address) { return _ownerCandidate; } // MODIFIERS /// @dev Throws if called by any account other than the owner. modifier onlyOwner() { require(msg.sender == _owner); _; } /// @dev Throws if called by any account other than the owner candidate. modifier onlyOwnerCandidate() { require(msg.sender == _ownerCandidate); _; } // FIELDS address internal _owner; address internal _ownerCandidate; } /// @title Standard ERC-20 token /// @dev Implementation of the basic ERC-20 token. contract TokenERC20 is ERC20 { using SafeMath for uint256; // PUBLIC FUNCTIONS /// @dev Transfers tokens to a specified address. /// @param to The address to transfer tokens to. /// @param value The amount of tokens to be transferred. /// @return A boolean that indicates if the operation was successful. function transfer(address to, uint256 value) public returns (bool) { _transfer(msg.sender, to, value); return true; } /// @dev Transfers tokens from one address to another. /// @param from The address to transfer tokens from. /// @param to The address to transfer tokens to. /// @param value The amount of tokens to be transferred. /// @return A boolean that indicates if the operation was successful. function transferFrom(address from, address to, uint256 value) public returns (bool) { _decreaseAllowance(from, msg.sender, value); _transfer(from, to, value); return true; } /// @dev Approves a specified address to spend a specified amount of tokens on behalf of msg.sender. /// Beware that changing an allowance with this method brings the risk that someone may use both the old /// and the new allowance by an unfortunate transaction ordering. One possible solution to mitigate this /// rare condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: /// https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 /// @param spender Address which will be allowed to spend the tokens. /// @param value Amount of tokens to allow to be spent. /// @return A boolean that indicates if the operation was successful. function approve(address spender, uint256 value) public returns (bool) { _allowances[msg.sender][spender] = value; emit Approval(msg.sender, spender, value); return true; } /// @dev Increases the amount of tokens that an owner allowed to spent by the spender. /// Method approve() should be called when _allowances[spender] == 0. To decrement allowance /// is better to use this function to avoid 2 calls (and wait until the first transaction is mined). /// @param spender The address which will spend the tokens. /// @param value The amount of tokens to increase the allowance by. /// @return A boolean that indicates if the operation was successful. function increaseAllowance(address spender, uint256 value) public returns (bool) { require(spender != address(0)); _increaseAllowance(msg.sender, spender, value); return true; } /// @dev Decreases the amount of tokens that an owner allowed to spent by the spender. /// Method approve() should be called when _allowances[spender] == 0. To decrement allowance /// is better to use this function to avoid 2 calls (and wait until the first transaction is mined). /// @param spender The address which will spend the tokens. /// @param value The amount of tokens to decrease the allowance by. /// @return A boolean that indicates if the operation was successful. function decreaseAllowance(address spender, uint256 value) public returns (bool) { require(spender != address(0)); _decreaseAllowance(msg.sender, spender, value); return true; } /// @dev Returns total amount of tokens in existence. /// @return A uint256 representing the amount of tokens in existence. function totalSupply() public view returns (uint256) { return _totalSupply; } /// @dev Gets the balance of a specified address. /// @param owner The address to query the balance of. /// @return A uint256 representing the amount of tokens owned by the specified address. function balanceOf(address owner) public view returns (uint256) { return _balances[owner]; } /// @dev Function to check the amount of tokens that an owner allowed to spend by the spender. /// @param owner The address which owns the tokens. /// @param spender The address which will spend the tokens. /// @return A uint256 representing the amount of tokens still available to spend by the spender. function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } // INTERNAL FUNCTIONS /// @dev Transfers tokens from one address to another address. /// @param from The address to transfer from. /// @param to The address to transfer to. /// @param value The amount to be transferred. function _transfer(address from, address to, uint256 value) internal { require(to != address(0)); require(value <= _balances[from]); _balances[from] = _balances[from].sub(value); _balances[to] = _balances[to].add(value); emit Transfer(from, to, value); } /// @dev Increases the amount of tokens that an owner allowed to spent by the spender. /// Method approve() should be called when _allowances[spender] == 0. To decrement allowance /// is better to use this function to avoid 2 calls (and wait until the first transaction is mined). /// @param owner The address which owns the tokens. /// @param spender The address which will spend the tokens. /// @param value The amount of tokens to increase the allowance by. function _increaseAllowance(address owner, address spender, uint256 value) internal { require(value > 0); _allowances[owner][spender] = _allowances[owner][spender].add(value); emit Approval(owner, spender, _allowances[owner][spender]); } /// @dev Decreases the amount of tokens that an owner allowed to spent by the spender. /// Method approve() should be called when _allowances[spender] == 0. To decrement allowance /// is better to use this function to avoid 2 calls (and wait until the first transaction is mined). /// @param owner The address which owns the tokens. /// @param spender The address which will spend the tokens. /// @param value The amount of tokens to decrease the allowance by. function _decreaseAllowance(address owner, address spender, uint256 value) internal { require(value > 0 && value <= _allowances[owner][spender]); _allowances[owner][spender] = _allowances[owner][spender].sub(value); emit Approval(owner, spender, _allowances[owner][spender]); } /// @dev Internal function that mints specified amount of tokens and assigns it to an address. /// This encapsulates the modification of balances such that the proper events are emitted. /// @param receiver The address that will receive the minted tokens. /// @param value The amount of tokens that will be minted. function _mint(address receiver, uint256 value) internal { require(receiver != address(0)); require(value > 0); _balances[receiver] = _balances[receiver].add(value); _totalSupply = _totalSupply.add(value); //_totalMinted = _totalMinted.add(value); emit Transfer(address(0), receiver, value); } /// @dev Internal function that burns specified amount of tokens of a given address. /// @param burner The address from which tokens will be burnt. /// @param value The amount of tokens that will be burnt. function _burn(address burner, uint256 value) internal { require(burner != address(0)); require(value > 0 && value <= _balances[burner]); _balances[burner] = _balances[burner].sub(value); _totalSupply = _totalSupply.sub(value); emit Transfer(burner, address(0), value); } /// @dev Internal function that burns specified amount of tokens of a given address, /// deducting from the sender's allowance for said account. Uses the internal burn function. /// @param burner The address from which tokens will be burnt. /// @param value The amount of tokens that will be burnt. function _burnFrom(address burner, uint256 value) internal { _decreaseAllowance(burner, msg.sender, value); _burn(burner, value); } // FIELDS uint256 internal _totalSupply; mapping (address => uint256) internal _balances; mapping (address => mapping(address => uint256)) internal _allowances; } /// @title Papyrus Token contract (PPR). contract PapyrusToken is SafeOwnable, TokenERC20, ERC677, ERC677Bridgeable { // EVENTS event ControlByOwnerRevoked(); event MintableChanged(bool mintable); event TransferableChanged(bool transferable); event ContractFallbackCallFailed(address from, address to, uint256 value); event BridgeContractChanged(address indexed previousBridgeContract, address indexed newBridgeContract); // PUBLIC FUNCTIONS constructor() public { _totalSupply = PPR_INITIAL_SUPPLY; _balances[msg.sender] = _totalSupply; emit Transfer(address(0), msg.sender, _totalSupply); } /// @dev Transfers tokens to a specified address with additional data if the recipient is a contact. /// @param to The address to transfer tokens to. /// @param value The amount of tokens to be transferred. /// @param data The extra data to be passed to the receiving contract. /// @return A boolean that indicates if the operation was successful. function transferAndCall(address to, uint256 value, bytes data) external canTransfer returns (bool) { require(to != address(this)); require(super.transfer(to, value)); emit Transfer(msg.sender, to, value, data); if (isContract(to)) { require(contractFallback(msg.sender, to, value, data)); } return true; } /// @dev Transfers tokens to a specified address. /// @param to The address to transfer tokens to. /// @param value The amount of tokens to be transferred. /// @return A boolean that indicates if the operation was successful. function transfer(address to, uint256 value) public canTransfer returns (bool) { require(super.transfer(to, value)); if (isContract(to) && !contractFallback(msg.sender, to, value, new bytes(0))) { if (to == _bridgeContract) { revert(); } emit ContractFallbackCallFailed(msg.sender, to, value); } return true; } /// @dev Transfers tokens from one address to another. /// @param from The address to transfer tokens from. /// @param to The address to transfer tokens to. /// @param value The amount of tokens to be transferred. /// @return A boolean that indicates if the operation was successful. function transferFrom(address from, address to, uint256 value) public canTransfer returns (bool) { require(super.transferFrom(from, to, value)); if (isContract(to) && !contractFallback(from, to, value, new bytes(0))) { if (to == _bridgeContract) { revert(); } emit ContractFallbackCallFailed(from, to, value); } return true; } /// @dev Transfers tokens to a specified addresses (optimized version for initial sending tokens). /// @param recipients Addresses to transfer tokens to. /// @param values Amounts of tokens to be transferred. /// @return A boolean that indicates if the operation was successful. function airdrop(address[] recipients, uint256[] values) public canTransfer returns (bool) { require(recipients.length == values.length); uint256 senderBalance = _balances[msg.sender]; for (uint256 i = 0; i < values.length; i++) { uint256 value = values[i]; address to = recipients[i]; require(senderBalance >= value); if (msg.sender != recipients[i]) { senderBalance = senderBalance - value; _balances[to] += value; } emit Transfer(msg.sender, to, value); } _balances[msg.sender] = senderBalance; return true; } /// @dev Mints specified amount of tokens and assigns it to a specified address. /// @param receiver The address that will receive the minted tokens. /// @param value The amount of tokens that will be minted. function mint(address receiver, uint256 value) public canMint returns (bool) { _mint(receiver, value); _totalMinted = _totalMinted.add(value); emit Mint(receiver, value); return true; } /// @dev Burns specified amount of tokens of the sender. /// @param value The amount of token to be burnt. function burn(uint256 value) public canBurn { _burn(msg.sender, value); _totalBurnt = _totalBurnt.add(value); emit Burn(msg.sender, value); } /// @dev Burns specified amount of tokens of the specified account. /// @param burner The address from which tokens will be burnt. /// @param value The amount of token to be burnt. function burnByOwner(address burner, uint256 value) public canBurnByOwner { _burn(burner, value); _totalBurnt = _totalBurnt.add(value); emit Burn(burner, value); } /// @dev Transfers funds stored on the token contract to specified recipient (required by token bridge). function claimTokens(address token, address to) public onlyOwnerOrBridgeContract { require(to != address(0)); if (token == address(0)) { to.transfer(address(this).balance); } else { ERC20 erc20 = ERC20(token); uint256 balance = erc20.balanceOf(address(this)); require(erc20.transfer(to, balance)); } } /// @dev Revokes control by owner so it is not possible to burn tokens from any account by contract owner. function revokeControlByOwner() public onlyOwner { require(_controllable); _controllable = false; emit ControlByOwnerRevoked(); } /// @dev Changes ability to mint tokens by permissioned accounts. function setMintable(bool mintable) public onlyOwner { require(_mintable != mintable); _mintable = mintable; emit MintableChanged(_mintable); } /// @dev Changes ability to transfer tokens by token holders. function setTransferable(bool transferable) public onlyOwner { require(_transferable != transferable); _transferable = transferable; emit TransferableChanged(_transferable); } /// @dev Changes address of token bridge contract. function setBridgeContract(address bridgeContract) public onlyOwner { require(_controllable); require(bridgeContract != address(0) && bridgeContract != _bridgeContract && isContract(bridgeContract)); emit BridgeContractChanged(_bridgeContract, bridgeContract); _bridgeContract = bridgeContract; } /// @dev Turn off renounceOwnership() method from Ownable contract. function renounceOwnership() public pure { revert(); } /// @dev Returns a boolean flag representing ability to burn tokens from any account by contract owner. /// @return A boolean that indicates if tokens can be burnt from any account by contract owner. function controllableByOwner() public view returns (bool) { return _controllable; } /// @dev Returns a boolean flag representing token mint ability. /// @return A boolean that indicates if tokens can be mintable by permissioned accounts. function mintable() public view returns (bool) { return _mintable; } /// @dev Returns a boolean flag representing token transfer ability. /// @return A boolean that indicates if tokens can be transferred by token holders. function transferable() public view returns (bool) { return _transferable; } /// @dev Returns an address of token bridge contract. /// @return An address of token bridge contract. function bridgeContract() public view returns (address) { return _bridgeContract; } /// @dev Returns total amount of minted tokens. /// @return A uint256 representing the amount of tokens were mint during token lifetime. function totalMinted() public view returns (uint256) { return _totalMinted; } /// @dev Returns total amount of burnt tokens. /// @return A uint256 representing the amount of tokens were burnt during token lifetime. function totalBurnt() public view returns (uint256) { return _totalBurnt; } /// @dev Returns version of token interfaces (required by token bridge). function getTokenInterfacesVersion() public pure returns (uint64, uint64, uint64) { uint64 major = 2; uint64 minor = 0; uint64 patch = 0; return (major, minor, patch); } // PRIVATE FUNCTIONS /// @dev Calls method onTokenTransfer() on specified contract address `receiver`. /// @return A boolean that indicates if the operation was successful. function contractFallback(address from, address receiver, uint256 value, bytes data) private returns (bool) { return receiver.call(abi.encodeWithSignature("onTokenTransfer(address,uint256,bytes)", from, value, data)); } /// @dev Determines if specified address is contract address. /// @return A boolean that indicates if specified address is contract address. function isContract(address account) private view returns (bool) { uint256 codeSize; assembly { codeSize := extcodesize(account) } return codeSize > 0; } // MODIFIERS modifier onlyOwnerOrBridgeContract() { require(msg.sender == _owner || msg.sender == _bridgeContract); _; } modifier canMint() { require(_mintable); require(msg.sender == _owner || msg.sender == _bridgeContract); _; } modifier canBurn() { require(msg.sender == _owner || msg.sender == _bridgeContract); _; } modifier canBurnByOwner() { require(msg.sender == _owner && _controllable); _; } modifier canTransfer() { require(_transferable || msg.sender == _owner); _; } // FIELDS // Standard fields used to describe the token string public constant name = "Papyrus Token"; string public constant symbol = "PPR"; uint8 public constant decimals = 18; // At the start of the token existence it is fully controllable by owner bool private _controllable = true; // At the start of the token existence it is mintable bool private _mintable = true; // At the start of the token existence it is not transferable bool private _transferable = false; // Address of token bridge contract address private _bridgeContract; // Total amount of tokens minted during token lifetime uint256 private _totalMinted; // Total amount of tokens burnt during token lifetime uint256 private _totalBurnt; // Amount of initially supplied tokens is constant and equals to 1,000,000,000 PPR uint256 private constant PPR_INITIAL_SUPPLY = 10**27; }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"bridgeContract","type":"address"}],"name":"setBridgeContract","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"burner","type":"address"},{"name":"value","type":"uint256"}],"name":"burnByOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"mintable","type":"bool"}],"name":"setMintable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"receiver","type":"address"},{"name":"value","type":"uint256"}],"name":"mint","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"value","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"mintable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ownerCandidate","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"recipients","type":"address[]"},{"name":"values","type":"uint256[]"}],"name":"airdrop","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"token","type":"address"},{"name":"to","type":"address"}],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"proposeOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getTokenInterfacesVersion","outputs":[{"name":"","type":"uint64"},{"name":"","type":"uint64"},{"name":"","type":"uint64"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"transferable","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBurnt","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"transferable","type":"bool"}],"name":"setTransferable","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"value","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"value","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"controllableByOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"bridgeContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"revokeControlByOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[],"name":"ControlByOwnerRevoked","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"mintable","type":"bool"}],"name":"MintableChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"transferable","type":"bool"}],"name":"TransferableChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"ContractFallbackCallFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousBridgeContract","type":"address"},{"indexed":true,"name":"newBridgeContract","type":"address"}],"name":"BridgeContractChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"receiver","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"burner","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"},{"indexed":false,"name":"data","type":"bytes"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipProposed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]
Contract Creation Code
60806040526005805462ff00001961ff001960ff19909216600117919091166101001716905534801561003157600080fd5b5060008054600160a060020a0319163317808255604051600160a060020a039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36b033b2e3c9fd0803ce80000006002819055336000818152600360209081526040808320859055805194855251929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a36119a9806100e56000396000f3006080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101a5578063095ea7b31461022f5780630b26cf6614610267578063111a18d31461028a57806318160ddd146102ae57806323b872dd146102d5578063285d70d4146102ff578063313ce5671461031957806339509351146103445780634000aea01461036857806340c10f191461039957806342966c68146103bd5780634bf365df146103d55780635f504a82146103ea578063672434821461041b57806369ffa08a146104a957806370a08231146104d0578063710bf322146104f1578063715018a61461051257806379ba509714610527578063859ba28c1461053c5780638da5cb5b1461057d57806392ff0d311461059257806395d89b41146105a7578063966ff650146105bc5780639cd23707146105d1578063a2309ff8146105eb578063a457c2d714610600578063a9059cbb14610624578063c706775514610648578063cd5965831461065d578063ce793a2014610672578063dd62ed3e14610687575b600080fd5b3480156101b157600080fd5b506101ba6106ae565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f45781810151838201526020016101dc565b50505050905090810190601f1680156102215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023b57600080fd5b50610253600160a060020a03600435166024356106e5565b604080519115158252519081900360200190f35b34801561027357600080fd5b50610288600160a060020a036004351661074b565b005b34801561029657600080fd5b50610288600160a060020a0360043516602435610835565b3480156102ba57600080fd5b506102c36108bf565b60408051918252519081900360200190f35b3480156102e157600080fd5b50610253600160a060020a03600435811690602435166044356108c5565b34801561030b57600080fd5b5061028860043515156109ba565b34801561032557600080fd5b5061032e610a47565b6040805160ff9092168252519081900360200190f35b34801561035057600080fd5b50610253600160a060020a0360043516602435610a4c565b34801561037457600080fd5b5061025360048035600160a060020a0316906024803591604435918201910135610a77565b3480156103a557600080fd5b50610253600160a060020a0360043516602435610b9d565b3480156103c957600080fd5b50610288600435610c53565b3480156103e157600080fd5b50610253610ce1565b3480156103f657600080fd5b506103ff610cef565b60408051600160a060020a039092168252519081900360200190f35b34801561042757600080fd5b506040805160206004803580820135838102808601850190965280855261025395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610cfe9650505050505050565b3480156104b557600080fd5b50610288600160a060020a0360043581169060243516610e47565b3480156104dc57600080fd5b506102c3600160a060020a036004351661101c565b3480156104fd57600080fd5b50610288600160a060020a0360043516611037565b34801561051e57600080fd5b506102886101a0565b34801561053357600080fd5b506102886110e2565b34801561054857600080fd5b5061055161116a565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b34801561058957600080fd5b506103ff611174565b34801561059e57600080fd5b50610253611183565b3480156105b357600080fd5b506101ba611192565b3480156105c857600080fd5b506102c36111c9565b3480156105dd57600080fd5b5061028860043515156111cf565b3480156105f757600080fd5b506102c361125f565b34801561060c57600080fd5b50610253600160a060020a0360043516602435611265565b34801561063057600080fd5b50610253600160a060020a0360043516602435611287565b34801561065457600080fd5b50610253611375565b34801561066957600080fd5b506103ff61137e565b34801561067e57600080fd5b50610288611394565b34801561069357600080fd5b506102c3600160a060020a03600435811690602435166113f1565b60408051808201909152600d81527f5061707972757320546f6b656e00000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600054600160a060020a0316331461076257600080fd5b60055460ff16151561077357600080fd5b600160a060020a038116158015906107a05750600554600160a060020a0382811663010000009092041614155b80156107b057506107b08161141c565b15156107bb57600080fd5b600554604051600160a060020a03808416926301000000900416907f6bc3d5f48e77b5ff80e5e6583401d7b5bc6f5b5023984f33ff6d04fed1e839e690600090a360058054600160a060020a0390921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b600054600160a060020a031633148015610851575060055460ff165b151561085c57600080fd5b6108668282611424565b600754610879908263ffffffff6114f716565b600755604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60025490565b60055460009062010000900460ff16806108e95750600054600160a060020a031633145b15156108f457600080fd5b6108ff84848461150d565b151561090a57600080fd5b6109138361141c565b801561093e57506040805160008082526020820190925261093c91869186918691905b50611525565b155b156109b057600554600160a060020a03848116630100000090920416141561096557600080fd5b60408051600160a060020a0380871682528516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a15b5060019392505050565b600054600160a060020a031633146109d157600080fd5b60055460ff61010090910416151581151514156109ed57600080fd5b6005805482151561010090810261ff00199092169190911791829055604080519190920460ff161515815290517f46c335b7f4282279447634dab2ba206ffb5ac6ce9744a5957353fced8b6044dc9181900360200190a150565b601281565b6000600160a060020a0383161515610a6357600080fd5b610a6e338484611690565b50600192915050565b60055460009062010000900460ff1680610a9b5750600054600160a060020a031633145b1515610aa657600080fd5b600160a060020a038516301415610abc57600080fd5b610ac68585611739565b1515610ad157600080fd5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868686604051808481526020018060200182810382528484828181526020019250808284376040519201829003965090945050505050a3610b468561141c565b15610b9257610b8733868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843750611525945050505050565b1515610b9257600080fd5b506001949350505050565b600554600090610100900460ff161515610bb657600080fd5b600054600160a060020a0316331480610be0575060055463010000009004600160a060020a031633145b1515610beb57600080fd5b610bf58383611746565b600654610c08908363ffffffff6114f716565b600655604080518381529051600160a060020a038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600054600160a060020a0316331480610c7d575060055463010000009004600160a060020a031633145b1515610c8857600080fd5b610c923382611424565b600754610ca5908263ffffffff6114f716565b60075560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600554610100900460ff1690565b600154600160a060020a031690565b6000806000806000600560029054906101000a900460ff1680610d2b5750600054600160a060020a031633145b1515610d3657600080fd5b8551875114610d4457600080fd5b33600090815260036020526040812054945092505b8551831015610e28578583815181101515610d7057fe5b9060200190602002015191508683815181101515610d8a57fe5b60209081029091010151905081841015610da357600080fd5b8683815181101515610db157fe5b6020908102919091010151600160a060020a03163314610def57600160a060020a038116600090815260036020526040902080548301905592819003925b604080518381529051600160a060020a03831691339160008051602061195e8339815191529181900360200190a3600190920191610d59565b5050336000908152600360205260409020919091555060019392505050565b600080548190600160a060020a0316331480610e74575060055463010000009004600160a060020a031633145b1515610e7f57600080fd5b600160a060020a0383161515610e9457600080fd5b600160a060020a0384161515610ee057604051600160a060020a03841690303180156108fc02916000818181858888f19350505050158015610eda573d6000803e3d6000fd5b50611016565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051859350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b505050506040513d6020811015610f6e57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610fdf57600080fd5b505af1158015610ff3573d6000803e3d6000fd5b505050506040513d602081101561100957600080fd5b5051151561101657600080fd5b50505050565b600160a060020a031660009081526003602052604090205490565b600054600160a060020a0316331461104e57600080fd5b600160a060020a038116158015906110745750600054600160a060020a03828116911614155b151561107f57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560008054604051938316939216917fb51454ce8c7f26becd312a46c4815553887f2ec876a0b8dc813b87f62edf6f809190a350565b600154600160a060020a031633146110f957600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6002600080909192565b600054600160a060020a031690565b60055462010000900460ff1690565b60408051808201909152600381527f5050520000000000000000000000000000000000000000000000000000000000602082015281565b60075490565b600054600160a060020a031633146111e657600080fd5b60055460ff62010000909104161515811515141561120357600080fd5b600580548215156201000090810262ff0000199092169190911791829055604080519190920460ff161515815290517f6488c20eb299903c41aa1b53c3ad5a3140aca395935e57cc52c1cc8dae8d9e179181900360200190a150565b60065490565b6000600160a060020a038316151561127c57600080fd5b610a6e3384846117f3565b60055460009062010000900460ff16806112ab5750600054600160a060020a031633145b15156112b657600080fd5b6112c08383611739565b15156112cb57600080fd5b6112d48361141c565b80156112fd5750604080516000808252602082019092526112fb9133918691869190610936565b155b15610a6e57600554600160a060020a03848116630100000090920416141561132457600080fd5b60408051338152600160a060020a038516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a150600192915050565b60055460ff1690565b60055463010000009004600160a060020a031690565b600054600160a060020a031633146113ab57600080fd5b60055460ff1615156113bc57600080fd5b6005805460ff191690556040517f8f985c5eed42f02e8b4264b5a49167ee86ef75b7c9439e5a09f2891543740c7e90600090a1565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b6000903b1190565b600160a060020a038216151561143957600080fd5b6000811180156114615750600160a060020a0382166000908152600360205260409020548111155b151561146c57600080fd5b600160a060020a038216600090815260036020526040902054611495908263ffffffff61186916565b600160a060020a0383166000908152600360205260409020556002546114c1908263ffffffff61186916565b600255604080518281529051600091600160a060020a0385169160008051602061195e8339815191529181900360200190a35050565b60008282018381101561150657fe5b9392505050565b600061151a8433846117f3565b6109b084848461187b565b600083600160a060020a03168584846040516024018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561159257818101518382015260200161157a565b50505050905090810190601f1680156115bf5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa4c0ed36000000000000000000000000000000000000000000000000000000001781529051825192975095508594509250905080838360005b8381101561164657818101518382015260200161162e565b50505050905090810190601f1680156116735780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af1979650505050505050565b6000811161169d57600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff6114f716565b600160a060020a0384811660008181526004602090815260408083209488168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610a6e33848461187b565b600160a060020a038216151561175b57600080fd5b6000811161176857600080fd5b600160a060020a038216600090815260036020526040902054611791908263ffffffff6114f716565b600160a060020a0383166000908152600360205260409020556002546117bd908263ffffffff6114f716565b600255604080518281529051600160a060020a0384169160009160008051602061195e8339815191529181900360200190a35050565b6000811180156118285750600160a060020a038084166000908152600460209081526040808320938616835292905220548111155b151561183357600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff61186916565b60008282111561187557fe5b50900390565b600160a060020a038216151561189057600080fd5b600160a060020a0383166000908152600360205260409020548111156118b557600080fd5b600160a060020a0383166000908152600360205260409020546118de908263ffffffff61186916565b600160a060020a038085166000908152600360205260408082209390935590841681522054611913908263ffffffff6114f716565b600160a060020a03808416600081815260036020908152604091829020949094558051858152905191939287169260008051602061195e83398151915292918290030190a35050505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582080517aaa47a8ce9b8bcaeaf5823e5733ef1c3374a773b03d9d99c17b0fe48cf80029
Deployed Bytecode
0x6080604052600436106101a05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146101a5578063095ea7b31461022f5780630b26cf6614610267578063111a18d31461028a57806318160ddd146102ae57806323b872dd146102d5578063285d70d4146102ff578063313ce5671461031957806339509351146103445780634000aea01461036857806340c10f191461039957806342966c68146103bd5780634bf365df146103d55780635f504a82146103ea578063672434821461041b57806369ffa08a146104a957806370a08231146104d0578063710bf322146104f1578063715018a61461051257806379ba509714610527578063859ba28c1461053c5780638da5cb5b1461057d57806392ff0d311461059257806395d89b41146105a7578063966ff650146105bc5780639cd23707146105d1578063a2309ff8146105eb578063a457c2d714610600578063a9059cbb14610624578063c706775514610648578063cd5965831461065d578063ce793a2014610672578063dd62ed3e14610687575b600080fd5b3480156101b157600080fd5b506101ba6106ae565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f45781810151838201526020016101dc565b50505050905090810190601f1680156102215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561023b57600080fd5b50610253600160a060020a03600435166024356106e5565b604080519115158252519081900360200190f35b34801561027357600080fd5b50610288600160a060020a036004351661074b565b005b34801561029657600080fd5b50610288600160a060020a0360043516602435610835565b3480156102ba57600080fd5b506102c36108bf565b60408051918252519081900360200190f35b3480156102e157600080fd5b50610253600160a060020a03600435811690602435166044356108c5565b34801561030b57600080fd5b5061028860043515156109ba565b34801561032557600080fd5b5061032e610a47565b6040805160ff9092168252519081900360200190f35b34801561035057600080fd5b50610253600160a060020a0360043516602435610a4c565b34801561037457600080fd5b5061025360048035600160a060020a0316906024803591604435918201910135610a77565b3480156103a557600080fd5b50610253600160a060020a0360043516602435610b9d565b3480156103c957600080fd5b50610288600435610c53565b3480156103e157600080fd5b50610253610ce1565b3480156103f657600080fd5b506103ff610cef565b60408051600160a060020a039092168252519081900360200190f35b34801561042757600080fd5b506040805160206004803580820135838102808601850190965280855261025395369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610cfe9650505050505050565b3480156104b557600080fd5b50610288600160a060020a0360043581169060243516610e47565b3480156104dc57600080fd5b506102c3600160a060020a036004351661101c565b3480156104fd57600080fd5b50610288600160a060020a0360043516611037565b34801561051e57600080fd5b506102886101a0565b34801561053357600080fd5b506102886110e2565b34801561054857600080fd5b5061055161116a565b6040805167ffffffffffffffff9485168152928416602084015292168183015290519081900360600190f35b34801561058957600080fd5b506103ff611174565b34801561059e57600080fd5b50610253611183565b3480156105b357600080fd5b506101ba611192565b3480156105c857600080fd5b506102c36111c9565b3480156105dd57600080fd5b5061028860043515156111cf565b3480156105f757600080fd5b506102c361125f565b34801561060c57600080fd5b50610253600160a060020a0360043516602435611265565b34801561063057600080fd5b50610253600160a060020a0360043516602435611287565b34801561065457600080fd5b50610253611375565b34801561066957600080fd5b506103ff61137e565b34801561067e57600080fd5b50610288611394565b34801561069357600080fd5b506102c3600160a060020a03600435811690602435166113f1565b60408051808201909152600d81527f5061707972757320546f6b656e00000000000000000000000000000000000000602082015281565b336000818152600460209081526040808320600160a060020a038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b600054600160a060020a0316331461076257600080fd5b60055460ff16151561077357600080fd5b600160a060020a038116158015906107a05750600554600160a060020a0382811663010000009092041614155b80156107b057506107b08161141c565b15156107bb57600080fd5b600554604051600160a060020a03808416926301000000900416907f6bc3d5f48e77b5ff80e5e6583401d7b5bc6f5b5023984f33ff6d04fed1e839e690600090a360058054600160a060020a0390921663010000000276ffffffffffffffffffffffffffffffffffffffff00000019909216919091179055565b600054600160a060020a031633148015610851575060055460ff165b151561085c57600080fd5b6108668282611424565b600754610879908263ffffffff6114f716565b600755604080518281529051600160a060020a038416917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a25050565b60025490565b60055460009062010000900460ff16806108e95750600054600160a060020a031633145b15156108f457600080fd5b6108ff84848461150d565b151561090a57600080fd5b6109138361141c565b801561093e57506040805160008082526020820190925261093c91869186918691905b50611525565b155b156109b057600554600160a060020a03848116630100000090920416141561096557600080fd5b60408051600160a060020a0380871682528516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a15b5060019392505050565b600054600160a060020a031633146109d157600080fd5b60055460ff61010090910416151581151514156109ed57600080fd5b6005805482151561010090810261ff00199092169190911791829055604080519190920460ff161515815290517f46c335b7f4282279447634dab2ba206ffb5ac6ce9744a5957353fced8b6044dc9181900360200190a150565b601281565b6000600160a060020a0383161515610a6357600080fd5b610a6e338484611690565b50600192915050565b60055460009062010000900460ff1680610a9b5750600054600160a060020a031633145b1515610aa657600080fd5b600160a060020a038516301415610abc57600080fd5b610ac68585611739565b1515610ad157600080fd5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868686604051808481526020018060200182810382528484828181526020019250808284376040519201829003965090945050505050a3610b468561141c565b15610b9257610b8733868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843750611525945050505050565b1515610b9257600080fd5b506001949350505050565b600554600090610100900460ff161515610bb657600080fd5b600054600160a060020a0316331480610be0575060055463010000009004600160a060020a031633145b1515610beb57600080fd5b610bf58383611746565b600654610c08908363ffffffff6114f716565b600655604080518381529051600160a060020a038516917f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d4121396885919081900360200190a250600192915050565b600054600160a060020a0316331480610c7d575060055463010000009004600160a060020a031633145b1515610c8857600080fd5b610c923382611424565b600754610ca5908263ffffffff6114f716565b60075560408051828152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a250565b600554610100900460ff1690565b600154600160a060020a031690565b6000806000806000600560029054906101000a900460ff1680610d2b5750600054600160a060020a031633145b1515610d3657600080fd5b8551875114610d4457600080fd5b33600090815260036020526040812054945092505b8551831015610e28578583815181101515610d7057fe5b9060200190602002015191508683815181101515610d8a57fe5b60209081029091010151905081841015610da357600080fd5b8683815181101515610db157fe5b6020908102919091010151600160a060020a03163314610def57600160a060020a038116600090815260036020526040902080548301905592819003925b604080518381529051600160a060020a03831691339160008051602061195e8339815191529181900360200190a3600190920191610d59565b5050336000908152600360205260409020919091555060019392505050565b600080548190600160a060020a0316331480610e74575060055463010000009004600160a060020a031633145b1515610e7f57600080fd5b600160a060020a0383161515610e9457600080fd5b600160a060020a0384161515610ee057604051600160a060020a03841690303180156108fc02916000818181858888f19350505050158015610eda573d6000803e3d6000fd5b50611016565b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051859350600160a060020a038416916370a082319160248083019260209291908290030181600087803b158015610f4457600080fd5b505af1158015610f58573d6000803e3d6000fd5b505050506040513d6020811015610f6e57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a0386811660048301526024820184905291519293509084169163a9059cbb916044808201926020929091908290030181600087803b158015610fdf57600080fd5b505af1158015610ff3573d6000803e3d6000fd5b505050506040513d602081101561100957600080fd5b5051151561101657600080fd5b50505050565b600160a060020a031660009081526003602052604090205490565b600054600160a060020a0316331461104e57600080fd5b600160a060020a038116158015906110745750600054600160a060020a03828116911614155b151561107f57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03838116919091179182905560008054604051938316939216917fb51454ce8c7f26becd312a46c4815553887f2ec876a0b8dc813b87f62edf6f809190a350565b600154600160a060020a031633146110f957600080fd5b60015460008054604051600160a060020a0393841693909116917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600180546000805473ffffffffffffffffffffffffffffffffffffffff19908116600160a060020a03841617909155169055565b6002600080909192565b600054600160a060020a031690565b60055462010000900460ff1690565b60408051808201909152600381527f5050520000000000000000000000000000000000000000000000000000000000602082015281565b60075490565b600054600160a060020a031633146111e657600080fd5b60055460ff62010000909104161515811515141561120357600080fd5b600580548215156201000090810262ff0000199092169190911791829055604080519190920460ff161515815290517f6488c20eb299903c41aa1b53c3ad5a3140aca395935e57cc52c1cc8dae8d9e179181900360200190a150565b60065490565b6000600160a060020a038316151561127c57600080fd5b610a6e3384846117f3565b60055460009062010000900460ff16806112ab5750600054600160a060020a031633145b15156112b657600080fd5b6112c08383611739565b15156112cb57600080fd5b6112d48361141c565b80156112fd5750604080516000808252602082019092526112fb9133918691869190610936565b155b15610a6e57600554600160a060020a03848116630100000090920416141561132457600080fd5b60408051338152600160a060020a038516602082015280820184905290517f11249f0fc79fc134a15a10d1da8291b79515bf987e036ced05b9ec119614070b9181900360600190a150600192915050565b60055460ff1690565b60055463010000009004600160a060020a031690565b600054600160a060020a031633146113ab57600080fd5b60055460ff1615156113bc57600080fd5b6005805460ff191690556040517f8f985c5eed42f02e8b4264b5a49167ee86ef75b7c9439e5a09f2891543740c7e90600090a1565b600160a060020a03918216600090815260046020908152604080832093909416825291909152205490565b6000903b1190565b600160a060020a038216151561143957600080fd5b6000811180156114615750600160a060020a0382166000908152600360205260409020548111155b151561146c57600080fd5b600160a060020a038216600090815260036020526040902054611495908263ffffffff61186916565b600160a060020a0383166000908152600360205260409020556002546114c1908263ffffffff61186916565b600255604080518281529051600091600160a060020a0385169160008051602061195e8339815191529181900360200190a35050565b60008282018381101561150657fe5b9392505050565b600061151a8433846117f3565b6109b084848461187b565b600083600160a060020a03168584846040516024018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561159257818101518382015260200161157a565b50505050905090810190601f1680156115bf5780820380516001836020036101000a031916815260200191505b5060408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa4c0ed36000000000000000000000000000000000000000000000000000000001781529051825192975095508594509250905080838360005b8381101561164657818101518382015260200161162e565b50505050905090810190601f1680156116735780820380516001836020036101000a031916815260200191505b509150506000604051808303816000865af1979650505050505050565b6000811161169d57600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff6114f716565b600160a060020a0384811660008181526004602090815260408083209488168084529482529182902085905581519485529051929391927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000610a6e33848461187b565b600160a060020a038216151561175b57600080fd5b6000811161176857600080fd5b600160a060020a038216600090815260036020526040902054611791908263ffffffff6114f716565b600160a060020a0383166000908152600360205260409020556002546117bd908263ffffffff6114f716565b600255604080518281529051600160a060020a0384169160009160008051602061195e8339815191529181900360200190a35050565b6000811180156118285750600160a060020a038084166000908152600460209081526040808320938616835292905220548111155b151561183357600080fd5b600160a060020a038084166000908152600460209081526040808320938616835292905220546116d3908263ffffffff61186916565b60008282111561187557fe5b50900390565b600160a060020a038216151561189057600080fd5b600160a060020a0383166000908152600360205260409020548111156118b557600080fd5b600160a060020a0383166000908152600360205260409020546118de908263ffffffff61186916565b600160a060020a038085166000908152600360205260408082209390935590841681522054611913908263ffffffff6114f716565b600160a060020a03808416600081815260036020908152604091829020949094558051858152905191939287169260008051602061195e83398151915292918290030190a35050505600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582080517aaa47a8ce9b8bcaeaf5823e5733ef1c3374a773b03d9d99c17b0fe48cf80029
Deployed Bytecode Sourcemap
13313:11028:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23459:45;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23459:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23459:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6540:204;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;6540:204:0;-1:-1:-1;;;;;6540:204:0;;;;;;;;;;;;;;;;;;;;;;;;;19642:337;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19642:337:0;-1:-1:-1;;;;;19642:337:0;;;;;;;18054:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18054:195:0;-1:-1:-1;;;;;18054:195:0;;;;;;;8338:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8338:91:0;;;;;;;;;;;;;;;;;;;;15681:423;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;15681:423:0;-1:-1:-1;;;;;15681:423:0;;;;;;;;;;;;19121:175;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19121:175:0;;;;;;;23555:35;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23555:35:0;;;;;;;;;;;;;;;;;;;;;;;7261:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7261:209:0;-1:-1:-1;;;;;7261:209:0;;;;;;;14325:378;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14325:378:0;;;;-1:-1:-1;;;;;14325:378:0;;;;;;;;;;;;;;;;17326:226;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17326:226:0;-1:-1:-1;;;;;17326:226:0;;;;;;;17677:173;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;17677:173:0;;;;;20615:82;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20615:82:0;;;;4161:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4161:97:0;;;;;;;;-1:-1:-1;;;;;4161:97:0;;;;;;;;;;;;;;16411:683;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;16411:683:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16411:683:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16411:683:0;;;;-1:-1:-1;16411:683:0;-1:-1:-1;16411:683:0;;-1:-1:-1;16411:683:0;;;;;;;;;-1:-1:-1;16411:683:0;;-1:-1:-1;16411:683:0;;-1:-1:-1;;;;;;;16411:683:0;18367:394;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;18367:394:0;-1:-1:-1;;;;;18367:394:0;;;;;;;;;;8644:106;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;8644:106:0;-1:-1:-1;;;;;8644:106:0;;;;;3414:228;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;3414:228:0;-1:-1:-1;;;;;3414:228:0;;;;;20060:68;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20060:68:0;;;;3764:196;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3764:196:0;;;;21752:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21752:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4016:79;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4016:79:0;;;;20868:90;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20868:90:0;;;;23511:37;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23511:37:0;;;;21577:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21577:89:0;;;;19371:207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;19371:207:0;;;;;;;21331:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21331:91:0;;;;7987:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;7987:209:0;-1:-1:-1;;;;;7987:209:0;;;;;;;14957:407;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;14957:407:0;-1:-1:-1;;;;;14957:407:0;;;;;;;20346:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20346:97:0;;;;21079;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21079:97:0;;;;18881:161;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18881:161:0;;;;9082:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;9082:134:0;-1:-1:-1;;;;;9082:134:0;;;;;;;;;;23459:45;;;;;;;;;;;;;;;;;;;:::o;6540:204::-;6634:10;6605:4;6622:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;6622:32:0;;;;;;;;;;;:40;;;6678:36;;;;;;;6605:4;;6622:32;;6634:10;;6678:36;;;;;;;;-1:-1:-1;6732:4:0;6540:204;;;;:::o;19642:337::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;19729:13;;;;19721:22;;;;;;;;-1:-1:-1;;;;;19762:28:0;;;;;;:65;;-1:-1:-1;19812:15:0;;-1:-1:-1;;;;;19794:33:0;;;19812:15;;;;;19794:33;;19762:65;:95;;;;;19831:26;19842:14;19831:10;:26::i;:::-;19754:104;;;;;;;;19896:15;;19874:54;;-1:-1:-1;;;;;19874:54:0;;;;19896:15;;;;;19874:54;;;;;19939:15;:32;;-1:-1:-1;;;;;19939:32:0;;;;;-1:-1:-1;;19939:32:0;;;;;;;;;19642:337::o;18054:195::-;23231:6;;-1:-1:-1;;;;;23231:6:0;23217:10;:20;:37;;;;-1:-1:-1;23241:13:0;;;;23217:37;23209:46;;;;;;;;18139:20;18145:6;18153:5;18139;:20::i;:::-;18184:11;;:22;;18200:5;18184:22;:15;:22;:::i;:::-;18170:11;:36;18222:19;;;;;;;;-1:-1:-1;;;;;18222:19:0;;;;;;;;;;;;;18054:195;;:::o;8338:91::-;8409:12;;8338:91;:::o;15681:423::-;23325:13;;15772:4;;23325:13;;;;;;:37;;-1:-1:-1;23356:6:0;;-1:-1:-1;;;;;23356:6:0;23342:10;:20;23325:37;23317:46;;;;;;;;15797:35;15816:4;15822:2;15826:5;15797:18;:35::i;:::-;15789:44;;;;;;;;15848:14;15859:2;15848:10;:14::i;:::-;:66;;;;-1:-1:-1;15901:12:0;;;15911:1;15901:12;;;;;;;;;15867:47;;15884:4;;15890:2;;15894:5;;15901:12;;;15867:16;:47::i;:::-;15866:48;15848:66;15844:231;;;15941:15;;-1:-1:-1;;;;;15935:21:0;;;15941:15;;;;;15935:21;15931:70;;;15977:8;;;15931:70;16020:43;;;-1:-1:-1;;;;;16020:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;15844:231;-1:-1:-1;16092:4:0;15681:423;;;;;:::o;19121:175::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;19193:9;;;;;;;;:21;;;;;;;19185:30;;;;;;19226:9;:20;;;;;;;;;-1:-1:-1;;19226:20:0;;;;;;;;;;;19262:26;;;19278:9;;;;19226:20;19278:9;19262:26;;;;;;;;;;;;;;;19121:175;:::o;23555:35::-;23588:2;23555:35;:::o;7261:209::-;7336:4;-1:-1:-1;;;;;7361:21:0;;;;7353:30;;;;;;7394:46;7413:10;7425:7;7434:5;7394:18;:46::i;:::-;-1:-1:-1;7458:4:0;7261:209;;;;:::o;14325:378::-;23325:13;;14419:4;;23325:13;;;;;;:37;;-1:-1:-1;23356:6:0;;-1:-1:-1;;;;;23356:6:0;23342:10;:20;23325:37;23317:46;;;;;;;;-1:-1:-1;;;;;14444:19:0;;14458:4;14444:19;;14436:28;;;;;;14483:25;14498:2;14502:5;14483:14;:25::i;:::-;14475:34;;;;;;;;14546:2;-1:-1:-1;;;;;14525:37:0;14534:10;-1:-1:-1;;;;;14525:37:0;;14550:5;14557:4;;14525:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14525:37:0;;-1:-1:-1;;;;;14525:37:0;14577:14;14588:2;14577:10;:14::i;:::-;14573:101;;;14616:45;14633:10;14645:2;14649:5;14656:4;;14616:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14616:16:0;;-1:-1:-1;;;;;14616:45:0:i;:::-;14608:54;;;;;;;;-1:-1:-1;14691:4:0;14325:378;;;;;;:::o;17326:226::-;22941:9;;17397:4;;22941:9;;;;;22933:18;;;;;;;;22984:6;;-1:-1:-1;;;;;22984:6:0;22970:10;:20;;:53;;-1:-1:-1;23008:15:0;;;;;-1:-1:-1;;;;;23008:15:0;22994:10;:29;22970:53;22962:62;;;;;;;;17414:22;17420:8;17430:5;17414;:22::i;:::-;17462:12;;:23;;17479:5;17462:23;:16;:23;:::i;:::-;17447:12;:38;17501:21;;;;;;;;-1:-1:-1;;;;;17501:21:0;;;;;;;;;;;;;-1:-1:-1;17540:4:0;17326:226;;;;:::o;17677:173::-;23104:6;;-1:-1:-1;;;;;23104:6:0;23090:10;:20;;:53;;-1:-1:-1;23128:15:0;;;;;-1:-1:-1;;;;;23128:15:0;23114:10;:29;23090:53;23082:62;;;;;;;;17732:24;17738:10;17750:5;17732;:24::i;:::-;17781:11;;:22;;17797:5;17781:22;:15;:22;:::i;:::-;17767:11;:36;17819:23;;;;;;;;17824:10;;17819:23;;;;;;;;;;17677:173;:::o;20615:82::-;20680:9;;;;;;;;20615:82::o;4161:97::-;4235:15;;-1:-1:-1;;;;;4235:15:0;4161:97;:::o;16411:683::-;16496:4;16567:21;16628:9;16682:13;16722:10;23325:13;;;;;;;;;;;:37;;;-1:-1:-1;23356:6:0;;-1:-1:-1;;;;;23356:6:0;23342:10;:20;23325:37;23317:46;;;;;;;;16542:13;;16521:17;;:34;16513:43;;;;;;16601:10;16591:21;;;;:9;:21;;;;;;;-1:-1:-1;16591:21:0;-1:-1:-1;16623:394:0;16647:6;:13;16643:1;:17;16623:394;;;16698:6;16705:1;16698:9;;;;;;;;;;;;;;;;;;16682:25;;16735:10;16746:1;16735:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16771:22:0;;;;16763:31;;;;;;16827:10;16838:1;16827:13;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16813:27:0;:10;:27;16809:146;;-1:-1:-1;;;;;16917:13:0;;;;;;:9;:13;;;;;:22;;;;;;16877:21;;;;;16809:146;16974:31;;;;;;;;-1:-1:-1;;;;;16974:31:0;;;16983:10;;-1:-1:-1;;;;;;;;;;;16974:31:0;;;;;;;;16662:3;;;;;16623:394;;;-1:-1:-1;;17037:10:0;17027:21;;;;:9;:21;;;;;:37;;;;-1:-1:-1;17082:4:0;;16411:683;-1:-1:-1;;;16411:683:0:o;18367:394::-;18602:11;22835:6;;18602:11;;-1:-1:-1;;;;;22835:6:0;22821:10;:20;;:53;;-1:-1:-1;22859:15:0;;;;;-1:-1:-1;;;;;22859:15:0;22845:10;:29;22821:53;22813:62;;;;;;;;-1:-1:-1;;;;;18467:16:0;;;;18459:25;;;;;;-1:-1:-1;;;;;18499:19:0;;;18495:259;;;18535:34;;-1:-1:-1;;;;;18535:11:0;;;18555:4;18547:21;18535:34;;;;;;;;;18547:21;18535:11;:34;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18535:34:0;18495:259;;;18661:30;;;;;;18685:4;18661:30;;;;;;18622:5;;-1:-1:-1;;;;;;18661:15:0;;;;;:30;;;;;;;;;;;;;;-1:-1:-1;18661:15:0;:30;;;5:2:-1;;;;30:1;27;20:12;5:2;18661:30:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18661:30:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18661:30:0;18714:27;;;;;;-1:-1:-1;;;;;18714:27:0;;;;;;;;;;;;;;;18661:30;;-1:-1:-1;18714:14:0;;;;;;:27;;;;;18661:30;;18714:27;;;;;;;;-1:-1:-1;18714:14:0;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;18714:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;18714:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18714:27:0;18706:36;;;;;;;;18367:394;;;;:::o;8644:106::-;-1:-1:-1;;;;;8726:16:0;8699:7;8726:16;;;:9;:16;;;;;;;8644:106::o;3414:228::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;-1:-1:-1;;;;;3494:22:0;;;;;;:44;;-1:-1:-1;3532:6:0;;-1:-1:-1;;;;;3520:18:0;;;3532:6;;3520:18;;3494:44;3486:53;;;;;;;;3550:15;:26;;-1:-1:-1;;3550:26:0;-1:-1:-1;;;;;3550:26:0;;;;;;;;;;;-1:-1:-1;3610:6:0;;3592:42;;3618:15;;;;3610:6;;;3592:42;;-1:-1:-1;3592:42:0;3414:228;:::o;3764:196::-;4584:15;;-1:-1:-1;;;;;4584:15:0;4570:10;:29;4562:38;;;;;;3862:15;;;3854:6;;3833:45;;-1:-1:-1;;;;;3862:15:0;;;;3854:6;;;;3833:45;;;3898:15;;;;3889:24;;-1:-1:-1;;3889:24:0;;;-1:-1:-1;;;;;3898:15:0;;3889:24;;;;3924:28;;;3764:196::o;21752:210::-;21860:1;21810:6;;21752:210;;;:::o;4016:79::-;4054:7;4081:6;-1:-1:-1;;;;;4081:6:0;4016:79;:::o;20868:90::-;20937:13;;;;;;;;20868:90::o;23511:37::-;;;;;;;;;;;;;;;;;;;:::o;21577:89::-;21647:11;;21577:89;:::o;19371:207::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;19451:13;;;;;;;;:29;;;;;;;19443:38;;;;;;19492:13;:28;;;;;;;;;-1:-1:-1;;19492:28:0;;;;;;;;;;;19536:34;;;19556:13;;;;19492:28;19556:13;19536:34;;;;;;;;;;;;;;;19371:207;:::o;21331:91::-;21402:12;;21331:91;:::o;7987:209::-;8062:4;-1:-1:-1;;;;;8087:21:0;;;;8079:30;;;;;;8120:46;8139:10;8151:7;8160:5;8120:18;:46::i;14957:407::-;23325:13;;15030:4;;23325:13;;;;;;:37;;-1:-1:-1;23356:6:0;;-1:-1:-1;;;;;23356:6:0;23342:10;:20;23325:37;23317:46;;;;;;;;15055:25;15070:2;15074:5;15055:14;:25::i;:::-;15047:34;;;;;;;;15096:14;15107:2;15096:10;:14::i;:::-;:72;;;;-1:-1:-1;15155:12:0;;;15165:1;15155:12;;;;;;;;;15115:53;;15132:10;;15144:2;;15148:5;;15155:12;;;15115:53;15114:54;15096:72;15092:243;;;15195:15;;-1:-1:-1;;;;;15189:21:0;;;15195:15;;;;;15189:21;15185:70;;;15231:8;;;15185:70;15274:49;;;15301:10;15274:49;;-1:-1:-1;;;;;15274:49:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15352:4:0;14957:407;;;;:::o;20346:97::-;20422:13;;;;20346:97;:::o;21079:::-;21153:15;;;;;-1:-1:-1;;;;;21153:15:0;;21079:97::o;18881:161::-;4408:6;;-1:-1:-1;;;;;4408:6:0;4394:10;:20;4386:29;;;;;;18949:13;;;;18941:22;;;;;;;;18974:13;:21;;-1:-1:-1;;18974:21:0;;;19011:23;;;;18990:5;;19011:23;18881:161::o;9082:134::-;-1:-1:-1;;;;;9181:18:0;;;9154:7;9181:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;9082:134::o;22552:185::-;22611:4;22678:20;;22717:12;;22552:185::o;12275:321::-;-1:-1:-1;;;;;12349:20:0;;;;12341:29;;;;;;12397:1;12389:5;:9;:39;;;;-1:-1:-1;;;;;;12411:17:0;;;;;;:9;:17;;;;;;12402:26;;;12389:39;12381:48;;;;;;;;-1:-1:-1;;;;;12460:17:0;;;;;;:9;:17;;;;;;:28;;12482:5;12460:28;:21;:28;:::i;:::-;-1:-1:-1;;;;;12440:17:0;;;;;;:9;:17;;;;;:48;12514:12;;:23;;12531:5;12514:23;:16;:23;:::i;:::-;12499:12;:38;12553:35;;;;;;;;12578:1;;-1:-1:-1;;;;;12553:35:0;;;-1:-1:-1;;;;;;;;;;;12553:35:0;;;;;;;;12275:321;;:::o;2425:147::-;2483:7;2515:5;;;2538:6;;;;2531:14;;;;2563:1;2425:147;-1:-1:-1;;;2425:147:0:o;5604:206::-;5683:4;5700:43;5719:4;5725:10;5737:5;5700:18;:43::i;:::-;5754:26;5764:4;5770:2;5774:5;5754:9;:26::i;22160:233::-;22262:4;22286:8;-1:-1:-1;;;;;22286:13:0;22366:4;22372:5;22379:4;22300:84;;;;;;-1:-1:-1;;;;;22300:84:0;-1:-1:-1;;;;;22300:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22300:84:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22300:84:0;;;-1:-1:-1;;26:21;;;22:32;6:49;;22300:84:0;;;49:4:-1;25:18;;61:17;;22300:84:0;182:15:-1;22300:84:0;179:29:-1;160:49;;22286:99:0;;;;22300:84;;-1:-1:-1;22286:99:0;-1:-1:-1;22286:99:0;;-1:-1:-1;25:18;-1:-1;22286:99:0;-1:-1:-1;22286:99:0;;25:18:-1;-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;22286:99:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22160:233;-1:-1:-1;;;;;;;22160:233:0:o;10274:269::-;10385:1;10377:9;;10369:18;;;;;;-1:-1:-1;;;;;10428:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;:38;;10460:5;10428:38;:31;:38;:::i;:::-;-1:-1:-1;;;;;10398:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:68;;;10482:53;;;;;;;10398:27;;:18;;10482:53;;;;;;;;;;10274:269;;;:::o;5147:140::-;5208:4;5225:32;5235:10;5247:2;5251:5;5225:9;:32::i;11694:352::-;-1:-1:-1;;;;;11770:22:0;;;;11762:31;;;;;;11820:1;11812:9;;11804:18;;;;;;-1:-1:-1;;;;;11855:19:0;;;;;;:9;:19;;;;;;:30;;11879:5;11855:30;:23;:30;:::i;:::-;-1:-1:-1;;;;;11833:19:0;;;;;;:9;:19;;;;;:52;11911:12;;:23;;11928:5;11911:23;:16;:23;:::i;:::-;11896:12;:38;12001:37;;;;;;;;-1:-1:-1;;;;;12001:37:0;;;12018:1;;-1:-1:-1;;;;;;;;;;;12001:37:0;;;;;;;;11694:352;;:::o;11042:309::-;11153:1;11145:5;:9;:49;;;;-1:-1:-1;;;;;;11167:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;11158:36;;;11145:49;11137:58;;;;;;;;-1:-1:-1;;;;;11236:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;:38;;11268:5;11236:38;:31;:38;:::i;2294:123::-;2352:7;2379:6;;;;2372:14;;;;-1:-1:-1;2404:5:0;;;2294:123::o;9471:304::-;-1:-1:-1;;;;;9559:16:0;;;;9551:25;;;;;;-1:-1:-1;;;;;9604:15:0;;;;;;:9;:15;;;;;;9595:24;;;9587:33;;;;;;-1:-1:-1;;;;;9649:15:0;;;;;;:9;:15;;;;;;:26;;9669:5;9649:26;:19;:26;:::i;:::-;-1:-1:-1;;;;;9631:15:0;;;;;;;:9;:15;;;;;;:44;;;;9702:13;;;;;;;:24;;9720:5;9702:24;:17;:24;:::i;:::-;-1:-1:-1;;;;;9686:13:0;;;;;;;:9;:13;;;;;;;;;:40;;;;9742:25;;;;;;;9686:13;;9742:25;;;;-1:-1:-1;;;;;;;;;;;9742:25:0;;;;;;;;9471:304;;;:::o
Swarm Source
bzzr://80517aaa47a8ce9b8bcaeaf5823e5733ef1c3374a773b03d9d99c17b0fe48cf8
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.