Source Code
Latest 25 from a total of 488 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Remove Operator | 12383291 | 1779 days ago | IN | 0 ETH | 0.00077116 | ||||
| Add Operator | 12383285 | 1779 days ago | IN | 0 ETH | 0.0024323 | ||||
| Generate Single ... | 12317546 | 1790 days ago | IN | 0 ETH | 0.01290271 | ||||
| Generate Single ... | 12316684 | 1790 days ago | IN | 0 ETH | 0.0135009 | ||||
| Generate Single ... | 12316650 | 1790 days ago | IN | 0 ETH | 0.01347955 | ||||
| Generate Single ... | 12199879 | 1808 days ago | IN | 0 ETH | 0.042525 | ||||
| Generate Single ... | 12199879 | 1808 days ago | IN | 0 ETH | 0.03915 | ||||
| Generate Single ... | 12199879 | 1808 days ago | IN | 0 ETH | 0.0408842 | ||||
| Generate Single ... | 12105796 | 1822 days ago | IN | 0 ETH | 0.04042675 | ||||
| Generate Single ... | 12105796 | 1822 days ago | IN | 0 ETH | 0.04219787 | ||||
| Generate Single ... | 12105794 | 1822 days ago | IN | 0 ETH | 0.04221875 | ||||
| Generate Single ... | 12104872 | 1822 days ago | IN | 0 ETH | 0.06482035 | ||||
| Generate Single ... | 12101333 | 1823 days ago | IN | 0 ETH | 0.06451811 | ||||
| Generate Single ... | 12101333 | 1823 days ago | IN | 0 ETH | 0.05303973 | ||||
| Generate Single ... | 12101333 | 1823 days ago | IN | 0 ETH | 0.04354653 | ||||
| Generate Single ... | 11960567 | 1845 days ago | IN | 0 ETH | 0.03307255 | ||||
| Generate Single ... | 11960567 | 1845 days ago | IN | 0 ETH | 0.03307255 | ||||
| Generate Single ... | 11960567 | 1845 days ago | IN | 0 ETH | 0.03453765 | ||||
| Generate Single ... | 11116312 | 1974 days ago | IN | 0 ETH | 0.00740663 | ||||
| Generate Single ... | 11072601 | 1981 days ago | IN | 0 ETH | 0.00796375 | ||||
| Generate Single ... | 11030474 | 1987 days ago | IN | 0 ETH | 0.0110823 | ||||
| Generate Single ... | 11006093 | 1991 days ago | IN | 0 ETH | 0.02464122 | ||||
| Generate Single ... | 11005439 | 1991 days ago | IN | 0 ETH | 0.01904326 | ||||
| Generate Single ... | 10943507 | 2001 days ago | IN | 0 ETH | 0.01627402 | ||||
| Generate Single ... | 10795155 | 2024 days ago | IN | 0 ETH | 0.05227438 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CutieGenerator
Compiler Version
v0.4.26+commit.4563c3fc
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-01-13
*/
pragma solidity ^0.4.23;
pragma solidity ^0.4.23;
pragma solidity ^0.4.23;
pragma solidity ^0.4.23;
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
*/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() public {
owner = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
/**
* @dev Allows the current owner to transfer control of the contract to a newOwner.
* @param newOwner The address to transfer ownership to.
*/
function transferOwnership(address newOwner) public onlyOwner {
require(newOwner != address(0));
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title Pausable
* @dev Base contract which allows children to implement an emergency stop mechanism.
*/
contract Pausable is Ownable {
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused);
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() onlyOwner whenNotPaused public {
paused = true;
emit Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() onlyOwner whenPaused public {
paused = false;
emit Unpause();
}
}
pragma solidity ^0.4.23;
/// @author https://BlockChainArchitect.iocontract Bank is CutiePluginBase
contract PluginInterface
{
/// @dev simply a boolean to indicate this is the contract we expect to be
function isPluginInterface() public pure returns (bool);
function onRemove() public;
/// @dev Begins new feature.
/// @param _cutieId - ID of token to auction, sender must be owner.
/// @param _parameter - arbitrary parameter
/// @param _seller - Old owner, if not the message sender
function run(
uint40 _cutieId,
uint256 _parameter,
address _seller
)
public
payable;
/// @dev Begins new feature, approved and signed by COO.
/// @param _cutieId - ID of token to auction, sender must be owner.
/// @param _parameter - arbitrary parameter
function runSigned(
uint40 _cutieId,
uint256 _parameter,
address _owner
) external payable;
function withdraw() external;
}
pragma solidity ^0.4.23;
pragma solidity ^0.4.23;
/// @title BlockchainCuties: Collectible and breedable cuties on the Ethereum blockchain.
/// @author https://BlockChainArchitect.io
/// @dev This is the BlockchainCuties configuration. It can be changed redeploying another version.
interface ConfigInterface
{
function isConfig() external pure returns (bool);
function getCooldownIndexFromGeneration(uint16 _generation, uint40 _cutieId) external view returns (uint16);
function getCooldownEndTimeFromIndex(uint16 _cooldownIndex, uint40 _cutieId) external view returns (uint40);
function getCooldownIndexFromGeneration(uint16 _generation) external view returns (uint16);
function getCooldownEndTimeFromIndex(uint16 _cooldownIndex) external view returns (uint40);
function getCooldownIndexCount() external view returns (uint256);
function getBabyGenFromId(uint40 _momId, uint40 _dadId) external view returns (uint16);
function getBabyGen(uint16 _momGen, uint16 _dadGen) external pure returns (uint16);
function getTutorialBabyGen(uint16 _dadGen) external pure returns (uint16);
function getBreedingFee(uint40 _momId, uint40 _dadId) external view returns (uint256);
}
contract CutieCoreInterface
{
function isCutieCore() pure public returns (bool);
ConfigInterface public config;
function transferFrom(address _from, address _to, uint256 _cutieId) external;
function transfer(address _to, uint256 _cutieId) external;
function ownerOf(uint256 _cutieId)
external
view
returns (address owner);
function getCutie(uint40 _id)
external
view
returns (
uint256 genes,
uint40 birthTime,
uint40 cooldownEndTime,
uint40 momId,
uint40 dadId,
uint16 cooldownIndex,
uint16 generation
);
function getGenes(uint40 _id)
public
view
returns (
uint256 genes
);
function getCooldownEndTime(uint40 _id)
public
view
returns (
uint40 cooldownEndTime
);
function getCooldownIndex(uint40 _id)
public
view
returns (
uint16 cooldownIndex
);
function getGeneration(uint40 _id)
public
view
returns (
uint16 generation
);
function getOptional(uint40 _id)
public
view
returns (
uint64 optional
);
function changeGenes(
uint40 _cutieId,
uint256 _genes)
public;
function changeCooldownEndTime(
uint40 _cutieId,
uint40 _cooldownEndTime)
public;
function changeCooldownIndex(
uint40 _cutieId,
uint16 _cooldownIndex)
public;
function changeOptional(
uint40 _cutieId,
uint64 _optional)
public;
function changeGeneration(
uint40 _cutieId,
uint16 _generation)
public;
function createSaleAuction(
uint40 _cutieId,
uint128 _startPrice,
uint128 _endPrice,
uint40 _duration
)
public;
function getApproved(uint256 _tokenId) external returns (address);
function totalSupply() view external returns (uint256);
function createPromoCutie(uint256 _genes, address _owner) external;
function checkOwnerAndApprove(address _claimant, uint40 _cutieId, address _pluginsContract) external view;
function breedWith(uint40 _momId, uint40 _dadId) public payable returns (uint40);
function getBreedingFee(uint40 _momId, uint40 _dadId) public view returns (uint256);
function restoreCutieToAddress(uint40 _cutieId, address _recipient) external;
function createGen0Auction(uint256 _genes, uint128 startPrice, uint128 endPrice, uint40 duration) external;
function createGen0AuctionWithTokens(uint256 _genes, uint128 startPrice, uint128 endPrice, uint40 duration, address[] allowedTokens) external;
function createPromoCutieWithGeneration(uint256 _genes, address _owner, uint16 _generation) external;
function createPromoCutieBulk(uint256[] _genes, address _owner, uint16 _generation) external;
}
pragma solidity ^0.4.23;
pragma solidity ^0.4.23;
pragma solidity ^0.4.23;
// ----------------------------------------------------------------------------
contract ERC20 {
// ERC Token Standard #223 Interface
// https://github.com/ethereum/EIPs/issues/223
string public symbol;
string public name;
uint8 public decimals;
function transfer(address _to, uint _value, bytes _data) external returns (bool success);
// approveAndCall
function approveAndCall(address spender, uint tokens, bytes data) external returns (bool success);
// ERC Token Standard #20 Interface
// https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md
function totalSupply() public view returns (uint);
function balanceOf(address tokenOwner) public view returns (uint balance);
function allowance(address tokenOwner, address spender) public view returns (uint remaining);
function transfer(address to, uint tokens) public returns (bool success);
function approve(address spender, uint tokens) public returns (bool success);
function transferFrom(address from, address to, uint tokens) public returns (bool success);
event Transfer(address indexed from, address indexed to, uint tokens);
event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
// bulk operations
function transferBulk(address[] to, uint[] tokens) public;
function approveBulk(address[] spender, uint[] tokens) public;
}
pragma solidity ^0.4.23;
/// @title ERC-721 Non-Fungible Token Standard
/// @dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md
/// Note: the ERC-165 identifier for this interface is 0x6466353c
interface ERC721 /*is ERC165*/ {
/// @notice Query if a contract implements an interface
/// @param interfaceID The interface identifier, as specified in ERC-165
/// @dev Interface identification is specified in ERC-165. This function
/// uses less than 30,000 gas.
/// @return `true` if the contract implements `interfaceID` and
/// `interfaceID` is not 0xffffffff, `false` otherwise
function supportsInterface(bytes4 interfaceID) external view returns (bool);
/// @dev This emits when ownership of any NFT changes by any mechanism.
/// This event emits when NFTs are created (`from` == 0) and destroyed
/// (`to` == 0). Exception: during contract creation, any number of NFTs
/// may be created and assigned without emitting Transfer. At the time of
/// any transfer, the approved address for that NFT (if any) is reset to none.
event Transfer(address indexed _from, address indexed _to, uint256 _tokenId);
/// @dev This emits when the approved address for an NFT is changed or
/// reaffirmed. The zero address indicates there is no approved address.
/// When a Transfer event emits, this also indicates that the approved
/// address for that NFT (if any) is reset to none.
event Approval(address indexed _owner, address indexed _approved, uint256 _tokenId);
/// @dev This emits when an operator is enabled or disabled for an owner.
/// The operator can manage all NFTs of the owner.
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
/// @notice Count all NFTs assigned to an owner
/// @dev NFTs assigned to the zero address are considered invalid, and this
/// function throws for queries about the zero address.
/// @param _owner An address for whom to query the balance
/// @return The number of NFTs owned by `_owner`, possibly zero
function balanceOf(address _owner) external view returns (uint256);
/// @notice Find the owner of an NFT
/// @param _tokenId The identifier for an NFT
/// @dev NFTs assigned to zero address are considered invalid, and queries
/// about them do throw.
/// @return The address of the owner of the NFT
function ownerOf(uint256 _tokenId) external view returns (address);
/// @notice Transfers the ownership of an NFT from one address to another address
/// @dev Throws unless `msg.sender` is the current owner, an authorized
/// operator, or the approved address for this NFT. Throws if `_from` is
/// not the current owner. Throws if `_to` is the zero address. Throws if
/// `_tokenId` is not a valid NFT. When transfer is complete, this function
/// checks if `_to` is a smart contract (code size > 0). If so, it calls
/// `onERC721Received` on `_to` and throws if the return value is not
/// `bytes4(keccak256("onERC721Received(address,uint256,bytes)"))`.
/// @param _from The current owner of the NFT
/// @param _to The new owner
/// @param _tokenId The NFT to transfer
/// @param data Additional data with no specified format, sent in call to `_to`
function safeTransferFrom(address _from, address _to, uint256 _tokenId, bytes data) external;
/// @notice Transfers the ownership of an NFT from one address to another address
/// @dev This works identically to the other function with an extra data parameter,
/// except this function just sets data to ""
/// @param _from The current owner of the NFT
/// @param _to The new owner
/// @param _tokenId The NFT to transfer
function safeTransferFrom(address _from, address _to, uint256 _tokenId) external;
/// @notice Transfer ownership of an NFT -- THE CALLER IS RESPONSIBLE
/// TO CONFIRM THAT `_to` IS CAPABLE OF RECEIVING NFTS OR ELSE
/// THEY MAY BE PERMANENTLY LOST
/// @dev Throws unless `msg.sender` is the current owner, an authorized
/// operator, or the approved address for this NFT. Throws if `_from` is
/// not the current owner. Throws if `_to` is the zero address. Throws if
/// `_tokenId` is not a valid NFT.
/// @param _from The current owner of the NFT
/// @param _to The new owner
/// @param _tokenId The NFT to transfer
function transferFrom(address _from, address _to, uint256 _tokenId) external;
/// @notice Set or reaffirm the approved address for an NFT
/// @dev The zero address indicates there is no approved address.
/// @dev Throws unless `msg.sender` is the current NFT owner, or an authorized
/// operator of the current owner.
/// @param _approved The new approved NFT controller
/// @param _tokenId The NFT to approve
function approve(address _approved, uint256 _tokenId) external;
/// @notice Enable or disable approval for a third party ("operator") to manage
/// all your asset.
/// @dev Emits the ApprovalForAll event
/// @param _operator Address to add to the set of authorized operators.
/// @param _approved True if the operators is approved, false to revoke approval
function setApprovalForAll(address _operator, bool _approved) external;
/// @notice Get the approved address for a single NFT
/// @dev Throws if `_tokenId` is not a valid NFT
/// @param _tokenId The NFT to find the approved address for
/// @return The approved address for this NFT, or the zero address if there is none
function getApproved(uint256 _tokenId) external view returns (address);
/// @notice Query if an address is an authorized operator for another address
/// @param _owner The address that owns the NFTs
/// @param _operator The address that acts on behalf of the owner
/// @return True if `_operator` is an approved operator for `_owner`, false otherwise
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
/// @notice A descriptive name for a collection of NFTs in this contract
function name() external pure returns (string _name);
/// @notice An abbreviated name for NFTs in this contract
function symbol() external pure returns (string _symbol);
/// @notice A distinct Uniform Resource Identifier (URI) for a given asset.
/// @dev Throws if `_tokenId` is not a valid NFT. URIs are defined in RFC
/// 3986. The URI may point to a JSON file that conforms to the "ERC721
/// Metadata JSON Schema".
function tokenURI(uint256 _tokenId) external view returns (string);
/// @notice Count NFTs tracked by this contract
/// @return A count of valid NFTs tracked by this contract, where each one of
/// them has an assigned and queryable owner not equal to the zero address
function totalSupply() external view returns (uint256);
/// @notice Enumerate valid NFTs
/// @dev Throws if `_index` >= `totalSupply()`.
/// @param _index A counter less than `totalSupply()`
/// @return The token identifier for the `_index`th NFT,
/// (sort order not specified)
function tokenByIndex(uint256 _index) external view returns (uint256);
/// @notice Enumerate NFTs assigned to an owner
/// @dev Throws if `_index` >= `balanceOf(_owner)` or if
/// `_owner` is the zero address, representing invalid NFTs.
/// @param _owner An address where we are interested in NFTs owned by them
/// @param _index A counter less than `balanceOf(_owner)`
/// @return The token identifier for the `_index`th NFT assigned to `_owner`,
/// (sort order not specified)
function tokenOfOwnerByIndex(address _owner, uint256 _index) external view returns (uint256);
/// @notice Transfers a Cutie to another address. When transferring to a smart
/// contract, ensure that it is aware of ERC-721 (or
/// BlockchainCuties specifically), otherwise the Cutie may be lost forever.
/// @param _to The address of the recipient, can be a user or contract.
/// @param _cutieId The ID of the Cutie to transfer.
function transfer(address _to, uint256 _cutieId) external;
}
pragma solidity ^0.4.23;
pragma solidity ^0.4.23;
/**
* @title ERC165
* @dev https://github.com/ethereum/EIPs/blob/master/EIPS/eip-165.md
*/
interface ERC165 {
/**
* @notice Query if a contract implements an interface
* @param _interfaceId The interface identifier, as specified in ERC-165
* @dev Interface identification is specified in ERC-165. This function
* uses less than 30,000 gas.
*/
function supportsInterface(bytes4 _interfaceId)
external
view
returns (bool);
}
/**
@title ERC-1155 Multi Token Standard
@dev See https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md
Note: The ERC-165 identifier for this interface is 0xd9b67a26.
*/
interface IERC1155 /* is ERC165 */ {
/**
@dev Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard).
The `_operator` argument MUST be msg.sender.
The `_from` argument MUST be the address of the holder whose balance is decreased.
The `_to` argument MUST be the address of the recipient whose balance is increased.
The `_id` argument MUST be the token type being transferred.
The `_value` argument MUST be the number of tokens the holder balance is decreased by and match what the recipient balance is increased by.
When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address).
When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address).
*/
event TransferSingle(address indexed _operator, address indexed _from, address indexed _to, uint256 _id, uint256 _value);
/**
@dev Either `TransferSingle` or `TransferBatch` MUST emit when tokens are transferred, including zero value transfers as well as minting or burning (see "Safe Transfer Rules" section of the standard).
The `_operator` argument MUST be msg.sender.
The `_from` argument MUST be the address of the holder whose balance is decreased.
The `_to` argument MUST be the address of the recipient whose balance is increased.
The `_ids` argument MUST be the list of tokens being transferred.
The `_values` argument MUST be the list of number of tokens (matching the list and order of tokens specified in _ids) the holder balance is decreased by and match what the recipient balance is increased by.
When minting/creating tokens, the `_from` argument MUST be set to `0x0` (i.e. zero address).
When burning/destroying tokens, the `_to` argument MUST be set to `0x0` (i.e. zero address).
*/
event TransferBatch(address indexed _operator, address indexed _from, address indexed _to, uint256[] _ids, uint256[] _values);
/**
@dev MUST emit when approval for a second party/operator address to manage all tokens for an owner address is enabled or disabled (absense of an event assumes disabled).
*/
event ApprovalForAll(address indexed _owner, address indexed _operator, bool _approved);
/**
@dev MUST emit when the URI is updated for a token ID.
URIs are defined in RFC 3986.
The URI MUST point a JSON file that conforms to the "ERC-1155 Metadata URI JSON Schema".
The URI value allows for ID substitution by clients. If the string {id} exists in any URI,
clients MUST replace this with the actual token ID in hexadecimal form.
*/
event URI(string _value, uint256 indexed _id);
/**
@notice Transfers `_value` amount of an `_id` from the `_from` address to the `_to` address specified (with safety call).
@dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
MUST revert if `_to` is the zero address.
MUST revert if balance of holder for token `_id` is lower than the `_value` sent.
MUST revert on any other error.
MUST emit the `TransferSingle` event to reflect the balance change (see "Safe Transfer Rules" section of the standard).
After the above conditions are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call `onERC1155Received` on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
@param _from Source address
@param _to Target address
@param _id ID of the token type
@param _value Transfer amount
@param _data Additional data with no specified format, MUST be sent unaltered in call to `onERC1155Received` on `_to`
*/
function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes _data) external;
/**
@notice Transfers `_values` amount(s) of `_ids` from the `_from` address to the `_to` address specified (with safety call).
@dev Caller must be approved to manage the tokens being transferred out of the `_from` account (see "Approval" section of the standard).
MUST revert if `_to` is the zero address.
MUST revert if length of `_ids` is not the same as length of `_values`.
MUST revert if any of the balance(s) of the holder(s) for token(s) in `_ids` is lower than the respective amount(s) in `_values` sent to the recipient.
MUST revert on any other error.
MUST emit `TransferSingle` or `TransferBatch` event(s) such that all the balance changes are reflected (see "Safe Transfer Rules" section of the standard).
Balance changes and events MUST follow the ordering of the arrays (_ids[0]/_values[0] before _ids[1]/_values[1], etc).
After the above conditions for the transfer(s) in the batch are met, this function MUST check if `_to` is a smart contract (e.g. code size > 0). If so, it MUST call the relevant `ERC1155TokenReceiver` hook(s) on `_to` and act appropriately (see "Safe Transfer Rules" section of the standard).
@param _from Source address
@param _to Target address
@param _ids IDs of each token type (order and length must match _values array)
@param _values Transfer amounts per token type (order and length must match _ids array)
@param _data Additional data with no specified format, MUST be sent unaltered in call to the `ERC1155TokenReceiver` hook(s) on `_to`
*/
function safeBatchTransferFrom(address _from, address _to, uint256[] _ids, uint256[] _values, bytes _data) external;
/**
@notice Get the balance of an account's Tokens.
@param _owner The address of the token holder
@param _id ID of the Token
@return The _owner's balance of the Token type requested
*/
function balanceOf(address _owner, uint256 _id) external view returns (uint256);
/**
@notice Get the balance of multiple account/token pairs
@param _owners The addresses of the token holders
@param _ids ID of the Tokens
@return The _owner's balance of the Token types requested (i.e. balance for each (owner, id) pair)
*/
function balanceOfBatch(address[] _owners, uint256[] _ids) external view returns (uint256[] memory);
/**
@notice Enable or disable approval for a third party ("operator") to manage all of the caller's tokens.
@dev MUST emit the ApprovalForAll event on success.
@param _operator Address to add to the set of authorized operators
@param _approved True if the operator is approved, false to revoke approval
*/
function setApprovalForAll(address _operator, bool _approved) external;
/**
@notice Queries the approval status of an operator for a given owner.
@param _owner The owner of the Tokens
@param _operator Address of authorized operator
@return True if the operator is approved, false if not
*/
function isApprovedForAll(address _owner, address _operator) external view returns (bool);
}
contract Operators
{
mapping (address=>bool) ownerAddress;
mapping (address=>bool) operatorAddress;
constructor() public
{
ownerAddress[msg.sender] = true;
}
modifier onlyOwner()
{
require(ownerAddress[msg.sender]);
_;
}
function isOwner(address _addr) public view returns (bool) {
return ownerAddress[_addr];
}
function addOwner(address _newOwner) external onlyOwner {
require(_newOwner != address(0));
ownerAddress[_newOwner] = true;
}
function removeOwner(address _oldOwner) external onlyOwner {
delete(ownerAddress[_oldOwner]);
}
modifier onlyOperator() {
require(isOperator(msg.sender));
_;
}
function isOperator(address _addr) public view returns (bool) {
return operatorAddress[_addr] || ownerAddress[_addr];
}
function addOperator(address _newOperator) external onlyOwner {
require(_newOperator != address(0));
operatorAddress[_newOperator] = true;
}
function removeOperator(address _oldOperator) external onlyOwner {
delete(operatorAddress[_oldOperator]);
}
function withdrawERC20(ERC20 _tokenContract) external onlyOwner
{
uint256 balance = _tokenContract.balanceOf(address(this));
_tokenContract.transfer(msg.sender, balance);
}
function approveERC721(ERC721 _tokenContract) external onlyOwner
{
_tokenContract.setApprovalForAll(msg.sender, true);
}
function approveERC1155(IERC1155 _tokenContract) external onlyOwner
{
_tokenContract.setApprovalForAll(msg.sender, true);
}
function withdrawEth() external onlyOwner
{
if (address(this).balance > 0)
{
msg.sender.transfer(address(this).balance);
}
}
}
/**
* @title Pausable
* @dev Base contract which allows children to implement an emergency stop mechanism.
*/
contract PausableOperators is Operators {
event Pause();
event Unpause();
bool public paused = false;
/**
* @dev Modifier to make a function callable only when the contract is not paused.
*/
modifier whenNotPaused() {
require(!paused);
_;
}
/**
* @dev Modifier to make a function callable only when the contract is paused.
*/
modifier whenPaused() {
require(paused);
_;
}
/**
* @dev called by the owner to pause, triggers stopped state
*/
function pause() onlyOwner whenNotPaused public {
paused = true;
emit Pause();
}
/**
* @dev called by the owner to unpause, returns to normal state
*/
function unpause() onlyOwner whenPaused public {
paused = false;
emit Unpause();
}
}
/// @author https://BlockChainArchitect.iocontract Bank is CutiePluginBase
contract CutiePluginBase is PluginInterface, PausableOperators
{
function isPluginInterface() public pure returns (bool)
{
return true;
}
// Reference to contract tracking NFT ownership
CutieCoreInterface public coreContract;
address public pluginsContract;
// @dev Throws if called by any account other than the owner.
modifier onlyCore() {
require(msg.sender == address(coreContract));
_;
}
modifier onlyPlugins() {
require(msg.sender == pluginsContract);
_;
}
/// @dev Constructor creates a reference to the NFT ownership contract
/// and verifies the owner cut is in the valid range.
/// @param _coreAddress - address of a deployed contract implementing
/// the Nonfungible Interface.
function setup(address _coreAddress, address _pluginsContract) public onlyOwner {
CutieCoreInterface candidateContract = CutieCoreInterface(_coreAddress);
require(candidateContract.isCutieCore());
coreContract = candidateContract;
pluginsContract = _pluginsContract;
}
/// @dev Returns true if the claimant owns the token.
/// @param _claimant - Address claiming to own the token.
/// @param _cutieId - ID of token whose ownership to verify.
function _isOwner(address _claimant, uint40 _cutieId) internal view returns (bool) {
return (coreContract.ownerOf(_cutieId) == _claimant);
}
/// @dev Escrows the NFT, assigning ownership to this contract.
/// Throws if the escrow fails.
/// @param _owner - Current owner address of token to escrow.
/// @param _cutieId - ID of token whose approval to verify.
function _escrow(address _owner, uint40 _cutieId) internal {
// it will throw if transfer fails
coreContract.transferFrom(_owner, this, _cutieId);
}
/// @dev Transfers an NFT owned by this contract to another address.
/// Returns true if the transfer succeeds.
/// @param _receiver - Address to transfer NFT to.
/// @param _cutieId - ID of token to transfer.
function _transfer(address _receiver, uint40 _cutieId) internal {
// it will throw if transfer fails
coreContract.transfer(_receiver, _cutieId);
}
function withdraw() external
{
require(
isOwner(msg.sender) ||
msg.sender == address(coreContract) ||
msg.sender == pluginsContract
);
_withdraw();
}
function _withdraw() internal
{
if (address(this).balance > 0)
{
address(coreContract).transfer(address(this).balance);
}
}
function onRemove() public onlyPlugins
{
_withdraw();
}
function run(uint40, uint256, address) public payable onlyCore
{
revert();
}
function runSigned(uint40, uint256, address) external payable onlyCore
{
revert();
}
}
/// @dev Receives payments for payd features from players for Blockchain Cuties
/// @author https://BlockChainArchitect.io
contract CutieGenerator is CutiePluginBase
{
uint40[] public parents;
uint public parentIndex;
CutieCoreInterface public proxy;
function setupGenerator(CutieCoreInterface _proxy, uint40 _parent1, uint40 _parent2) external onlyOwner
{
addParent(_parent1);
addParent(_parent2);
proxy = _proxy;
}
function generateSingle(uint _genome, uint16 _generation, address _target) external onlyOperator returns (uint40 babyId)
{
return _generate(_genome, _generation, _target);
}
function generateSingleBreed(uint _genome, uint16 _generation, address _target) external onlyOperator returns (uint40 babyId)
{
return _generateBreed(_genome, _generation, _target);
}
function generateSinglePromo(uint _genome, uint16 _generation, address _target) external onlyOperator returns (uint40 babyId)
{
require(_generation == 0);
return _generatePromo(_genome, _target);
}
function generate(uint _genome, uint16 _generation, address[] _target) external onlyOperator
{
for (uint i = 0; i < _target.length; i++)
{
_generate(_genome, _generation, _target[i]);
}
}
function _generate(uint _genome, uint16 _generation, address _target) internal returns (uint40 babyId)
{
if (_generation == 0)
{
return _generatePromo(_genome, _target);
}
else
{
return uint40(_generateBreed(_genome, _generation, _target));
}
}
function _generatePromo(uint _genome, address _target) internal returns (uint40 babyId)
{
proxy.createPromoCutie(_genome, _target);
return uint40(coreContract.totalSupply());
}
function addParent(uint40 _newParent) public onlyOwner
{
parents.push(_newParent);
}
function removeParent(uint40 _index) external onlyOwner
{
parents[_index] = parents[parents.length-1];
parents.length--;
}
function addParents(uint40[] _newParents) external onlyOwner
{
for (uint i = 0; i < _newParents.length; i++)
{
parents.push(_newParents[i]);
}
}
function _getNextParent() internal returns (uint40 parent)
{
parent = parents[parentIndex];
parentIndex++;
if (parentIndex >= parents.length)
{
parentIndex = 0;
}
}
function _generateBreed(uint _genome, uint16 _generation, address _target) internal returns (uint40 babyId)
{
uint40 momId = _getNextParent();
uint40 dadId = _getNextParent();
coreContract.changeCooldownEndTime(momId, 0);
coreContract.changeCooldownEndTime(dadId, 0);
coreContract.changeCooldownIndex(momId, 0);
coreContract.changeCooldownIndex(dadId, 0);
babyId = coreContract.breedWith(momId, dadId);
coreContract.changeCooldownIndex(babyId, _generation);
coreContract.changeGeneration(babyId, _generation);
coreContract.changeGenes(babyId, _genome);
coreContract.transfer(_target, babyId);
return babyId;
}
function recreate(uint40 _cutieId, uint _genome, uint16 _generation) external onlyOwner
{
coreContract.changeGeneration(_cutieId, _generation);
coreContract.changeGenes(_cutieId, _genome);
}
function recoverCutie(uint40 _cutieId) external onlyOwner
{
coreContract.transfer(msg.sender, _cutieId);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[],"name":"onRemove","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldOwner","type":"address"}],"name":"removeOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_proxy","type":"address"},{"name":"_parent1","type":"uint40"},{"name":"_parent2","type":"uint40"}],"name":"setupGenerator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_coreAddress","type":"address"},{"name":"_pluginsContract","type":"address"}],"name":"setup","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"approveERC721","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newParents","type":"uint40[]"}],"name":"addParents","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_index","type":"uint40"}],"name":"removeParent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_addr","type":"address"}],"name":"isOperator","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"addOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"},{"name":"_target","type":"address"}],"name":"generateSingle","outputs":[{"name":"babyId","type":"uint40"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"parentIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"},{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"}],"name":"recreate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"parents","outputs":[{"name":"","type":"uint40"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"},{"name":"_target","type":"address"}],"name":"generateSinglePromo","outputs":[{"name":"babyId","type":"uint40"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_cutieId","type":"uint40"}],"name":"recoverCutie","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"isPluginInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"","type":"uint40"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"runSigned","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"pluginsContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_newOperator","type":"address"}],"name":"addOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"","type":"uint40"},{"name":"","type":"uint256"},{"name":"","type":"address"}],"name":"run","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"withdrawEth","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"},{"name":"_target","type":"address"}],"name":"generateSingleBreed","outputs":[{"name":"babyId","type":"uint40"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_oldOperator","type":"address"}],"name":"removeOperator","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_genome","type":"uint256"},{"name":"_generation","type":"uint16"},{"name":"_target","type":"address[]"}],"name":"generate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"approveERC1155","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newParent","type":"uint40"}],"name":"addParent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"coreContract","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"proxy","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_tokenContract","type":"address"}],"name":"withdrawERC20","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]Contract Creation Code
608060409081526002805460ff19908116909155336000908152602081905291909120805490911660011790556118a78061003b6000396000f3006080604052600436106101925763ffffffff60e060020a600035041663119523698114610197578063173825d9146101ae5780631b5cb066146101cf5780632d34ba79146102005780632f54bf6e146102275780633ccfd60b1461025c5780633f4ba83a1461027157806346195c12146102865780635368672e146102a75780635c975abb146102c75780636cc6b419146102dc5780636d70f7ae146102fb5780637065cb481461031c5780637895fe981461033d5780637948690a146103825780638456cb59146103a9578063897efe5c146103be578063898572a6146103e757806389bdf45b146103ff578063940bb2171461042a57806394a89233146104495780639652713e1461045e578063976ef75b1461047f5780639870d7fe146104b0578063a055d4551461045e578063a0ef91df146104d1578063ab69e5ea146104e6578063ac8a584a14610511578063bb620e3c14610532578063c6b72a1f14610286578063d116f5491461055e578063e80db5db1461057d578063ec55688914610592578063f4f3b200146105a7575b600080fd5b3480156101a357600080fd5b506101ac6105c8565b005b3480156101ba57600080fd5b506101ac600160a060020a03600435166105e9565b3480156101db57600080fd5b506101ac600160a060020a036004351664ffffffffff60243581169060443516610628565b34801561020c57600080fd5b506101ac600160a060020a0360043581169060243516610689565b34801561023357600080fd5b50610248600160a060020a0360043516610775565b604080519115158252519081900360200190f35b34801561026857600080fd5b506101ac610793565b34801561027d57600080fd5b506101ac6107d6565b34801561029257600080fd5b506101ac600160a060020a036004351661083a565b3480156102b357600080fd5b506101ac60048035602481019101356108da565b3480156102d357600080fd5b50610248610967565b3480156102e857600080fd5b506101ac64ffffffffff60043516610970565b34801561030757600080fd5b50610248600160a060020a0360043516610a2b565b34801561032857600080fd5b506101ac600160a060020a0360043516610a70565b34801561034957600080fd5b5061036860043561ffff60243516600160a060020a0360443516610ac7565b6040805164ffffffffff9092168252519081900360200190f35b34801561038e57600080fd5b50610397610af2565b60408051918252519081900360200190f35b3480156103b557600080fd5b506101ac610af8565b3480156103ca57600080fd5b506101ac64ffffffffff6004351660243561ffff60443516610b5e565b3480156103f357600080fd5b50610368600435610ca2565b34801561040b57600080fd5b5061036860043561ffff60243516600160a060020a0360443516610cdb565b34801561043657600080fd5b506101ac64ffffffffff60043516610d0a565b34801561045557600080fd5b50610248610d9e565b6101ac64ffffffffff60043516602435600160a060020a0360443516610da4565b34801561048b57600080fd5b50610494610dc0565b60408051600160a060020a039092168252519081900360200190f35b3480156104bc57600080fd5b506101ac600160a060020a0360043516610dcf565b3480156104dd57600080fd5b506101ac610e29565b3480156104f257600080fd5b5061036860043561ffff60243516600160a060020a0360443516610e81565b34801561051d57600080fd5b506101ac600160a060020a0360043516610ea2565b34801561053e57600080fd5b506101ac60048035906024803561ffff1691604435918201910135610ee1565b34801561056a57600080fd5b506101ac64ffffffffff60043516610f32565b34801561058957600080fd5b50610494610fb1565b34801561059e57600080fd5b50610494610fc5565b3480156105b357600080fd5b506101ac600160a060020a0360043516610fd4565b600354600160a060020a031633146105df57600080fd5b6105e761111b565b565b3360009081526020819052604090205460ff16151561060757600080fd5b600160a060020a03166000908152602081905260409020805460ff19169055565b3360009081526020819052604090205460ff16151561064657600080fd5b61064f82610f32565b61065881610f32565b50506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b3360009081526020819052604081205460ff1615156106a757600080fd5b82905080600160a060020a0316634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106e857600080fd5b505af11580156106fc573d6000803e3d6000fd5b505050506040513d602081101561071257600080fd5b5051151561071f57600080fd5b6002805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03938416021790556003805473ffffffffffffffffffffffffffffffffffffffff19169290911691909117905550565b600160a060020a031660009081526020819052604090205460ff1690565b61079c33610775565b806107b657506002546101009004600160a060020a031633145b806107cb5750600354600160a060020a031633145b15156105df57600080fd5b3360009081526020819052604090205460ff1615156107f457600080fd5b60025460ff16151561080557600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b3360009081526020819052604090205460ff16151561085857600080fd5b604080517fa22cb465000000000000000000000000000000000000000000000000000000008152336004820152600160248201529051600160a060020a0383169163a22cb46591604480830192600092919082900301818387803b1580156108bf57600080fd5b505af11580156108d3573d6000803e3d6000fd5b5050505050565b3360009081526020819052604081205460ff1615156108f857600080fd5b5060005b8181101561096257600483838381811061091257fe5b835460018181018655600095865260209586902060068084049091018054600592909406919091026101000a64ffffffffff979094029590950135861683029290950219161790915550016108fc565b505050565b60025460ff1681565b3360009081526020819052604090205460ff16151561098e57600080fd5b6004805460001981019081106109a057fe5b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1660048264ffffffffff168154811015156109dd57fe5b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff1602179055506004805480919060019003610a279190611833565b5050565b600160a060020a03811660009081526001602052604081205460ff1680610a6a5750600160a060020a03821660009081526020819052604090205460ff165b92915050565b3360009081526020819052604090205460ff161515610a8e57600080fd5b600160a060020a0381161515610aa357600080fd5b600160a060020a03166000908152602081905260409020805460ff19166001179055565b6000610ad233610a2b565b1515610add57600080fd5b610ae8848484611166565b90505b9392505050565b60055481565b3360009081526020819052604090205460ff161515610b1657600080fd5b60025460ff1615610b2657600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b3360009081526020819052604090205460ff161515610b7c57600080fd5b600254604080517f5a3f88f000000000000000000000000000000000000000000000000000000000815264ffffffffff8616600482015261ffff841660248201529051610100909204600160a060020a031691635a3f88f09160448082019260009290919082900301818387803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b5050600254604080517fe1af915d00000000000000000000000000000000000000000000000000000000815264ffffffffff88166004820152602481018790529051610100909204600160a060020a0316935063e1af915d925060448082019260009290919082900301818387803b158015610c8557600080fd5b505af1158015610c99573d6000803e3d6000fd5b50505050505050565b6004805482908110610cb057fe5b9060005260206000209060069182820401919006600502915054906101000a900464ffffffffff1681565b6000610ce633610a2b565b1515610cf157600080fd5b61ffff831615610d0057600080fd5b610ae8848361118f565b3360009081526020819052604090205460ff161515610d2857600080fd5b600254604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015264ffffffffff841660248201529051610100909204600160a060020a03169163a9059cbb9160448082019260009290919082900301818387803b1580156108bf57600080fd5b60015b90565b6002546101009004600160a060020a0316331461019257600080fd5b600354600160a060020a031681565b3360009081526020819052604090205460ff161515610ded57600080fd5b600160a060020a0381161515610e0257600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b3360009081526020819052604090205460ff161515610e4757600080fd5b6000303111156105e7576040513390303180156108fc02916000818181858888f19350505050158015610e7e573d6000803e3d6000fd5b50565b6000610e8c33610a2b565b1515610e9757600080fd5b610ae884848461129e565b3360009081526020819052604090205460ff161515610ec057600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000610eec33610a2b565b1515610ef757600080fd5b5060005b818110156108d357610f298585858585818110610f1457fe5b90506020020135600160a060020a0316611166565b50600101610efb565b3360009081526020819052604090205460ff161515610f5057600080fd5b6004805460018101825560009190915260068082047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805464ffffffffff948516600593909406929092026101000a928302939092021916919091179055565b6002546101009004600160a060020a031681565b600654600160a060020a031681565b3360009081526020819052604081205460ff161515610ff257600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561105357600080fd5b505af1158015611067573d6000803e3d6000fd5b505050506040513d602081101561107d57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b1580156110eb57600080fd5b505af11580156110ff573d6000803e3d6000fd5b505050506040513d602081101561111557600080fd5b50505050565b6000303111156105e757600254604051600160a060020a036101009092049190911690303180156108fc02916000818181858888f19350505050158015610e7e573d6000803e3d6000fd5b600061ffff831615156111845761117d848361118f565b9050610aeb565b61117d84848461129e565b600654604080517f210fcbf600000000000000000000000000000000000000000000000000000000815260048101859052600160a060020a0384811660248301529151600093929092169163210fcbf691604480820192869290919082900301818387803b15801561120057600080fd5b505af1158015611214573d6000803e3d6000fd5b50505050600260019054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561126b57600080fd5b505af115801561127f573d6000803e3d6000fd5b505050506040513d602081101561129557600080fd5b50519392505050565b60008060006112ab6117df565b91506112b56117df565b600254604080517fc479142100000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151939450610100909204600160a060020a03169263c479142192604480820193929182900301818387803b15801561132d57600080fd5b505af1158015611341573d6000803e3d6000fd5b5050600254604080517fc479142100000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151610100909304600160a060020a0316945063c479142193506044808201939182900301818387803b1580156113b957600080fd5b505af11580156113cd573d6000803e3d6000fd5b5050600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff871660048201526000602482018190529151610100909304600160a060020a0316945063cf7e69f893506044808201939182900301818387803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151610100909304600160a060020a0316945063cf7e69f893506044808201939182900301818387803b1580156114d157600080fd5b505af11580156114e5573d6000803e3d6000fd5b5050600254604080517fc30bc5ef00000000000000000000000000000000000000000000000000000000815264ffffffffff8781166004830152861660248201529051610100909204600160a060020a0316935063c30bc5ef92506044808201926020929091908290030181600087803b15801561156257600080fd5b505af1158015611576573d6000803e3d6000fd5b505050506040513d602081101561158c57600080fd5b5051600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff8416600482015261ffff891660248201529051929550610100909104600160a060020a03169163cf7e69f89160448082019260009290919082900301818387803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b5050600254604080517f5a3f88f000000000000000000000000000000000000000000000000000000000815264ffffffffff8816600482015261ffff8a1660248201529051610100909204600160a060020a03169350635a3f88f0925060448082019260009290919082900301818387803b15801561169d57600080fd5b505af11580156116b1573d6000803e3d6000fd5b5050600254604080517fe1af915d00000000000000000000000000000000000000000000000000000000815264ffffffffff88166004820152602481018b90529051610100909204600160a060020a0316935063e1af915d925060448082019260009290919082900301818387803b15801561172c57600080fd5b505af1158015611740573d6000803e3d6000fd5b5050600254604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015264ffffffffff891660248301529151610100909304909116935063a9059cbb925060448082019260009290919082900301818387803b1580156117be57600080fd5b505af11580156117d2573d6000803e3d6000fd5b5050505050509392505050565b600060046005548154811015156117f257fe5b600091825260209091206006808304909101546005805460010180825560045493909406026101000a900464ffffffffff16925011610da157600060055590565b8154818355818111156109625760008381526020902061096291610da19160066005928301819004820192860104015b808211156118775760008155600101611863565b50905600a165627a7a72305820ecdec03e9e70c0728410da6a26f17739c4ea33081cff9e06936751b706af18250029
Deployed Bytecode
0x6080604052600436106101925763ffffffff60e060020a600035041663119523698114610197578063173825d9146101ae5780631b5cb066146101cf5780632d34ba79146102005780632f54bf6e146102275780633ccfd60b1461025c5780633f4ba83a1461027157806346195c12146102865780635368672e146102a75780635c975abb146102c75780636cc6b419146102dc5780636d70f7ae146102fb5780637065cb481461031c5780637895fe981461033d5780637948690a146103825780638456cb59146103a9578063897efe5c146103be578063898572a6146103e757806389bdf45b146103ff578063940bb2171461042a57806394a89233146104495780639652713e1461045e578063976ef75b1461047f5780639870d7fe146104b0578063a055d4551461045e578063a0ef91df146104d1578063ab69e5ea146104e6578063ac8a584a14610511578063bb620e3c14610532578063c6b72a1f14610286578063d116f5491461055e578063e80db5db1461057d578063ec55688914610592578063f4f3b200146105a7575b600080fd5b3480156101a357600080fd5b506101ac6105c8565b005b3480156101ba57600080fd5b506101ac600160a060020a03600435166105e9565b3480156101db57600080fd5b506101ac600160a060020a036004351664ffffffffff60243581169060443516610628565b34801561020c57600080fd5b506101ac600160a060020a0360043581169060243516610689565b34801561023357600080fd5b50610248600160a060020a0360043516610775565b604080519115158252519081900360200190f35b34801561026857600080fd5b506101ac610793565b34801561027d57600080fd5b506101ac6107d6565b34801561029257600080fd5b506101ac600160a060020a036004351661083a565b3480156102b357600080fd5b506101ac60048035602481019101356108da565b3480156102d357600080fd5b50610248610967565b3480156102e857600080fd5b506101ac64ffffffffff60043516610970565b34801561030757600080fd5b50610248600160a060020a0360043516610a2b565b34801561032857600080fd5b506101ac600160a060020a0360043516610a70565b34801561034957600080fd5b5061036860043561ffff60243516600160a060020a0360443516610ac7565b6040805164ffffffffff9092168252519081900360200190f35b34801561038e57600080fd5b50610397610af2565b60408051918252519081900360200190f35b3480156103b557600080fd5b506101ac610af8565b3480156103ca57600080fd5b506101ac64ffffffffff6004351660243561ffff60443516610b5e565b3480156103f357600080fd5b50610368600435610ca2565b34801561040b57600080fd5b5061036860043561ffff60243516600160a060020a0360443516610cdb565b34801561043657600080fd5b506101ac64ffffffffff60043516610d0a565b34801561045557600080fd5b50610248610d9e565b6101ac64ffffffffff60043516602435600160a060020a0360443516610da4565b34801561048b57600080fd5b50610494610dc0565b60408051600160a060020a039092168252519081900360200190f35b3480156104bc57600080fd5b506101ac600160a060020a0360043516610dcf565b3480156104dd57600080fd5b506101ac610e29565b3480156104f257600080fd5b5061036860043561ffff60243516600160a060020a0360443516610e81565b34801561051d57600080fd5b506101ac600160a060020a0360043516610ea2565b34801561053e57600080fd5b506101ac60048035906024803561ffff1691604435918201910135610ee1565b34801561056a57600080fd5b506101ac64ffffffffff60043516610f32565b34801561058957600080fd5b50610494610fb1565b34801561059e57600080fd5b50610494610fc5565b3480156105b357600080fd5b506101ac600160a060020a0360043516610fd4565b600354600160a060020a031633146105df57600080fd5b6105e761111b565b565b3360009081526020819052604090205460ff16151561060757600080fd5b600160a060020a03166000908152602081905260409020805460ff19169055565b3360009081526020819052604090205460ff16151561064657600080fd5b61064f82610f32565b61065881610f32565b50506006805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b3360009081526020819052604081205460ff1615156106a757600080fd5b82905080600160a060020a0316634d6a813a6040518163ffffffff1660e060020a028152600401602060405180830381600087803b1580156106e857600080fd5b505af11580156106fc573d6000803e3d6000fd5b505050506040513d602081101561071257600080fd5b5051151561071f57600080fd5b6002805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a03938416021790556003805473ffffffffffffffffffffffffffffffffffffffff19169290911691909117905550565b600160a060020a031660009081526020819052604090205460ff1690565b61079c33610775565b806107b657506002546101009004600160a060020a031633145b806107cb5750600354600160a060020a031633145b15156105df57600080fd5b3360009081526020819052604090205460ff1615156107f457600080fd5b60025460ff16151561080557600080fd5b6002805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b3360009081526020819052604090205460ff16151561085857600080fd5b604080517fa22cb465000000000000000000000000000000000000000000000000000000008152336004820152600160248201529051600160a060020a0383169163a22cb46591604480830192600092919082900301818387803b1580156108bf57600080fd5b505af11580156108d3573d6000803e3d6000fd5b5050505050565b3360009081526020819052604081205460ff1615156108f857600080fd5b5060005b8181101561096257600483838381811061091257fe5b835460018181018655600095865260209586902060068084049091018054600592909406919091026101000a64ffffffffff979094029590950135861683029290950219161790915550016108fc565b505050565b60025460ff1681565b3360009081526020819052604090205460ff16151561098e57600080fd5b6004805460001981019081106109a057fe5b90600052602060002090600691828204019190066005029054906101000a900464ffffffffff1660048264ffffffffff168154811015156109dd57fe5b90600052602060002090600691828204019190066005026101000a81548164ffffffffff021916908364ffffffffff1602179055506004805480919060019003610a279190611833565b5050565b600160a060020a03811660009081526001602052604081205460ff1680610a6a5750600160a060020a03821660009081526020819052604090205460ff165b92915050565b3360009081526020819052604090205460ff161515610a8e57600080fd5b600160a060020a0381161515610aa357600080fd5b600160a060020a03166000908152602081905260409020805460ff19166001179055565b6000610ad233610a2b565b1515610add57600080fd5b610ae8848484611166565b90505b9392505050565b60055481565b3360009081526020819052604090205460ff161515610b1657600080fd5b60025460ff1615610b2657600080fd5b6002805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b3360009081526020819052604090205460ff161515610b7c57600080fd5b600254604080517f5a3f88f000000000000000000000000000000000000000000000000000000000815264ffffffffff8616600482015261ffff841660248201529051610100909204600160a060020a031691635a3f88f09160448082019260009290919082900301818387803b158015610bf657600080fd5b505af1158015610c0a573d6000803e3d6000fd5b5050600254604080517fe1af915d00000000000000000000000000000000000000000000000000000000815264ffffffffff88166004820152602481018790529051610100909204600160a060020a0316935063e1af915d925060448082019260009290919082900301818387803b158015610c8557600080fd5b505af1158015610c99573d6000803e3d6000fd5b50505050505050565b6004805482908110610cb057fe5b9060005260206000209060069182820401919006600502915054906101000a900464ffffffffff1681565b6000610ce633610a2b565b1515610cf157600080fd5b61ffff831615610d0057600080fd5b610ae8848361118f565b3360009081526020819052604090205460ff161515610d2857600080fd5b600254604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815233600482015264ffffffffff841660248201529051610100909204600160a060020a03169163a9059cbb9160448082019260009290919082900301818387803b1580156108bf57600080fd5b60015b90565b6002546101009004600160a060020a0316331461019257600080fd5b600354600160a060020a031681565b3360009081526020819052604090205460ff161515610ded57600080fd5b600160a060020a0381161515610e0257600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b3360009081526020819052604090205460ff161515610e4757600080fd5b6000303111156105e7576040513390303180156108fc02916000818181858888f19350505050158015610e7e573d6000803e3d6000fd5b50565b6000610e8c33610a2b565b1515610e9757600080fd5b610ae884848461129e565b3360009081526020819052604090205460ff161515610ec057600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b6000610eec33610a2b565b1515610ef757600080fd5b5060005b818110156108d357610f298585858585818110610f1457fe5b90506020020135600160a060020a0316611166565b50600101610efb565b3360009081526020819052604090205460ff161515610f5057600080fd5b6004805460018101825560009190915260068082047f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01805464ffffffffff948516600593909406929092026101000a928302939092021916919091179055565b6002546101009004600160a060020a031681565b600654600160a060020a031681565b3360009081526020819052604081205460ff161515610ff257600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561105357600080fd5b505af1158015611067573d6000803e3d6000fd5b505050506040513d602081101561107d57600080fd5b5051604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051919250600160a060020a0384169163a9059cbb916044808201926020929091908290030181600087803b1580156110eb57600080fd5b505af11580156110ff573d6000803e3d6000fd5b505050506040513d602081101561111557600080fd5b50505050565b6000303111156105e757600254604051600160a060020a036101009092049190911690303180156108fc02916000818181858888f19350505050158015610e7e573d6000803e3d6000fd5b600061ffff831615156111845761117d848361118f565b9050610aeb565b61117d84848461129e565b600654604080517f210fcbf600000000000000000000000000000000000000000000000000000000815260048101859052600160a060020a0384811660248301529151600093929092169163210fcbf691604480820192869290919082900301818387803b15801561120057600080fd5b505af1158015611214573d6000803e3d6000fd5b50505050600260019054906101000a9004600160a060020a0316600160a060020a03166318160ddd6040518163ffffffff1660e060020a028152600401602060405180830381600087803b15801561126b57600080fd5b505af115801561127f573d6000803e3d6000fd5b505050506040513d602081101561129557600080fd5b50519392505050565b60008060006112ab6117df565b91506112b56117df565b600254604080517fc479142100000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151939450610100909204600160a060020a03169263c479142192604480820193929182900301818387803b15801561132d57600080fd5b505af1158015611341573d6000803e3d6000fd5b5050600254604080517fc479142100000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151610100909304600160a060020a0316945063c479142193506044808201939182900301818387803b1580156113b957600080fd5b505af11580156113cd573d6000803e3d6000fd5b5050600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff871660048201526000602482018190529151610100909304600160a060020a0316945063cf7e69f893506044808201939182900301818387803b15801561144557600080fd5b505af1158015611459573d6000803e3d6000fd5b5050600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff861660048201526000602482018190529151610100909304600160a060020a0316945063cf7e69f893506044808201939182900301818387803b1580156114d157600080fd5b505af11580156114e5573d6000803e3d6000fd5b5050600254604080517fc30bc5ef00000000000000000000000000000000000000000000000000000000815264ffffffffff8781166004830152861660248201529051610100909204600160a060020a0316935063c30bc5ef92506044808201926020929091908290030181600087803b15801561156257600080fd5b505af1158015611576573d6000803e3d6000fd5b505050506040513d602081101561158c57600080fd5b5051600254604080517fcf7e69f800000000000000000000000000000000000000000000000000000000815264ffffffffff8416600482015261ffff891660248201529051929550610100909104600160a060020a03169163cf7e69f89160448082019260009290919082900301818387803b15801561160b57600080fd5b505af115801561161f573d6000803e3d6000fd5b5050600254604080517f5a3f88f000000000000000000000000000000000000000000000000000000000815264ffffffffff8816600482015261ffff8a1660248201529051610100909204600160a060020a03169350635a3f88f0925060448082019260009290919082900301818387803b15801561169d57600080fd5b505af11580156116b1573d6000803e3d6000fd5b5050600254604080517fe1af915d00000000000000000000000000000000000000000000000000000000815264ffffffffff88166004820152602481018b90529051610100909204600160a060020a0316935063e1af915d925060448082019260009290919082900301818387803b15801561172c57600080fd5b505af1158015611740573d6000803e3d6000fd5b5050600254604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015264ffffffffff891660248301529151610100909304909116935063a9059cbb925060448082019260009290919082900301818387803b1580156117be57600080fd5b505af11580156117d2573d6000803e3d6000fd5b5050505050509392505050565b600060046005548154811015156117f257fe5b600091825260209091206006808304909101546005805460010180825560045493909406026101000a900464ffffffffff16925011610da157600060055590565b8154818355818111156109625760008381526020902061096291610da19160066005928301819004820192860104015b808211156118775760008155600101611863565b50905600a165627a7a72305820ecdec03e9e70c0728410da6a26f17739c4ea33081cff9e06936751b706af18250029
Deployed Bytecode Sourcemap
31681:3615:0:-;;;;;;;;;-1:-1:-1;;;31681:3615:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31259:74;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31259:74:0;;;;;;26102:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26102:109:0;-1:-1:-1;;;;;26102:109:0;;;;;31832:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31832:202:0;-1:-1:-1;;;;;31832:202:0;;;;;;;;;;;;;;29352:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;29352:311:0;-1:-1:-1;;;;;29352:311:0;;;;;;;;;;25832:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25832:104:0;-1:-1:-1;;;;;25832:104:0;;;;;;;;;;;;;;;;;;;;;;;30845:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30845:225:0;;;;28337:105;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28337:105:0;;;;26964:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26964:139:0;-1:-1:-1;;;;;26964:139:0;;;;;33753:194;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;33753:194:0;;;;;;;;;;;;27654:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27654:26:0;;;;33595:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;33595:150:0;;;;;;;26313:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26313:133:0;-1:-1:-1;;;;;26313:133:0;;;;;25944:150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;25944:150:0;-1:-1:-1;;;;;25944:150:0;;;;;32042:192;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32042:192:0;;;;;;;-1:-1:-1;;;;;32042:192:0;;;;;;;;;;;;;;;;;;;;;;;;31762:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31762:23:0;;;;;;;;;;;;;;;;;;;;28139:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28139:103:0;;;;34942:218;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;34942:218:0;;;;;;;;;;;;;31732:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;31732:23:0;;;;;32452:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32452:225:0;;;;;;;-1:-1:-1;;;;;32452:225:0;;;;;35168:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;35168:125:0;;;;;;;28598:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28598:91:0;;;;31444:103;;;;;;;;-1:-1:-1;;;;;31444:103:0;;;;;28795:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28795:30:0;;;;;;;;-1:-1:-1;;;;;28795:30:0;;;;;;;;;;;;;;26454:165;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26454:165:0;-1:-1:-1;;;;;26454:165:0;;;;;27261:174;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27261:174:0;;;;32242:202;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32242:202:0;;;;;;;-1:-1:-1;;;;;32242:202:0;;;;;26627:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26627:121:0;-1:-1:-1;;;;;26627:121:0;;;;;32685:237;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;32685:237:0;;;;;;;;;;;;;;;;;;;;;33484:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;33484:103:0;;;;;;;28750:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28750:38:0;;;;31792:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31792:31:0;;;;26756:200;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;26756:200:0;-1:-1:-1;;;;;26756:200:0;;;;;31259:74;29060:15;;-1:-1:-1;;;;;29060:15:0;29046:10;:29;29038:38;;;;;;31314:11;:9;:11::i;:::-;31259:74::o;26102:109::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;;;;;26179:23:0;:12;:23;;;;;;;;;;26172:31;;-1:-1:-1;;26172:31:0;;;26102:109::o;31832:202::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;31952:19;31962:8;31952:9;:19::i;:::-;31982;31992:8;31982:9;:19::i;:::-;-1:-1:-1;;32012:5:0;:14;;-1:-1:-1;;32012:14:0;-1:-1:-1;;;;;32012:14:0;;;;;;;;;;31832:202::o;29352:311::-;25792:10;29443:36;25779:24;;;;;;;;;;;;;25771:33;;;;;;;;29501:12;29443:71;;29533:17;-1:-1:-1;;;;;29533:29:0;;:31;;;;;-1:-1:-1;;;29533:31:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29533:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29533:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29533:31:0;29525:40;;;;;;;;29576:12;:32;;-1:-1:-1;;29576:32:0;;-1:-1:-1;;;;;29576:32:0;;;;;;;29621:15;:34;;-1:-1:-1;;29621:34:0;;;;;;;;;;;-1:-1:-1;29352:311:0:o;25832:104::-;-1:-1:-1;;;;;25909:19:0;25885:4;25909:19;;;;;;;;;;;;;;25832:104::o;30845:225::-;30912:19;30920:10;30912:7;:19::i;:::-;:71;;;-1:-1:-1;30970:12:0;;;;;-1:-1:-1;;;;;30970:12:0;30948:10;:35;30912:71;:117;;;-1:-1:-1;31014:15:0;;-1:-1:-1;;;;;31014:15:0;31000:10;:29;30912:117;30890:150;;;;;;;28337:105;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;28020:6;;;;28012:15;;;;;;;;28395:6;:14;;-1:-1:-1;;28395:14:0;;;28425:9;;;;28404:5;;28425:9;28337:105::o;26964:139::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;27045:50;;;;;;27078:10;27045:50;;;;27090:4;27045:50;;;;;;-1:-1:-1;;;;;27045:32:0;;;;;:50;;;;;-1:-1:-1;;27045:50:0;;;;;;;-1:-1:-1;27045:32:0;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;27045:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27045:50:0;;;;26964:139;:::o;33753:194::-;25792:10;33835:6;25779:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;33844:1:0;33830:110;33847:22;;;33830:110;;;33900:7;33913:11;;33925:1;33913:14;;;;;;;27:10:-1;;39:1;23:18;;;45:23;;-1:-1;33900:28:0;;;33913:14;33900:28;;;;;;;;;;;;;;;;;;;;;;;;33913:14;;;;;;;;;;;;33900:28;;;;;;;;;;;;-1:-1:-1;33871:3:0;33830:110;;;33753:194;;;:::o;27654:26::-;;;;;;:::o;33595:150::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;33685:7;33693:14;;-1:-1:-1;;33693:16:0;;;33685:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33667:7;33675:6;33667:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;33721:7;:16;;;;;;;;;;;;:::i;:::-;;33595:150;:::o;26313:133::-;-1:-1:-1;;;;;26393:22:0;;26369:4;26393:22;;;:15;:22;;;;;;;;;:45;;-1:-1:-1;;;;;;26419:19:0;;:12;:19;;;;;;;;;;;;;26393:45;26386:52;26313:133;-1:-1:-1;;26313:133:0:o;25944:150::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;;;;;26019:23:0;;;;26011:32;;;;;;-1:-1:-1;;;;;26056:23:0;:12;:23;;;;;;;;;;:30;;-1:-1:-1;;26056:30:0;26082:4;26056:30;;;25944:150::o;32042:192::-;32148:13;26262:22;26273:10;26262;:22::i;:::-;26254:31;;;;;;;;32186:40;32196:7;32205:11;32218:7;32186:9;:40::i;:::-;32179:47;;26296:1;32042:192;;;;;:::o;31762:23::-;;;;:::o;28139:103::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;27842:6;;;;27841:7;27833:16;;;;;;28198:6;:13;;-1:-1:-1;;28198:13:0;28207:4;28198:13;;;28227:7;;;;28198:6;;28227:7;28139:103::o;34942:218::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;35046:12;;:52;;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;35046:12:0;;:29;;:52;;;;;-1:-1:-1;;35046:52:0;;;;;;;;-1:-1:-1;35046:12:0;:52;;;5:2:-1;;;;30:1;27;20:12;5:2;35046:52:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;35109:12:0;;:43;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;35109:12:0;;-1:-1:-1;35109:24:0;;-1:-1:-1;35109:43:0;;;;;-1:-1:-1;;35109:43:0;;;;;;;;-1:-1:-1;35109:12:0;:43;;;5:2:-1;;;;30:1;27;20:12;5:2;35109:43:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;35109:43:0;;;;34942:218;;;:::o;31732:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32452:225::-;32563:13;26262:22;26273:10;26262;:22::i;:::-;26254:31;;;;;;;;32602:16;;;;32594:25;;;;;;32637:32;32652:7;32661;32637:14;:32::i;35168:125::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;35242:12;;:43;;;;;;35264:10;35242:43;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;35242:12:0;;:21;;:43;;;;;-1:-1:-1;;35242:43:0;;;;;;;;-1:-1:-1;35242:12:0;:43;;;5:2:-1;;;;30:1;27;20:12;28598:91:0;28677:4;28598:91;;:::o;31444:103::-;28962:12;;;;;-1:-1:-1;;;;;28962:12:0;28940:10;:35;28932:44;;;;;28795:30;;;-1:-1:-1;;;;;28795:30:0;;:::o;26454:165::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;;;;;26535:26:0;;;;26527:35;;;;;;-1:-1:-1;;;;;26575:29:0;;;;;26607:4;26575:29;;;;;;;;:36;;-1:-1:-1;;26575:36:0;;;;;;26454:165::o;27261:174::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;27347:1;27331:4;27323:21;:25;27319:109;;;27374:42;;:10;;27402:4;27394:21;27374:42;;;;;;;;;27394:21;27374:10;:42;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;27374:42:0;27261:174::o;32242:202::-;32353:13;26262:22;26273:10;26262;:22::i;:::-;26254:31;;;;;;;;32391:45;32406:7;32415:11;32428:7;32391:14;:45::i;26627:121::-;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;-1:-1:-1;;;;;26710:29:0;;;;;:15;:29;;;;;26703:37;;-1:-1:-1;;26703:37:0;;;26627:121::o;32685:237::-;32799:6;26262:22;26273:10;26262;:22::i;:::-;26254:31;;;;;;;;-1:-1:-1;32808:1:0;32794:121;32811:18;;;32794:121;;;32860:43;32870:7;32879:11;32892:7;;32900:1;32892:10;;;;;;;;;;;;;-1:-1:-1;;;;;32892:10:0;32860:9;:43::i;:::-;-1:-1:-1;32831:3:0;;32794:121;;33484:103;25792:10;25779:12;:24;;;;;;;;;;;;;25771:33;;;;;;;;33555:7;27:10:-1;;39:1;23:18;;45:23;;-1:-1;33555:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;33484:103::o;28750:38::-;;;;;;-1:-1:-1;;;;;28750:38:0;;:::o;31792:31::-;;;-1:-1:-1;;;;;31792:31:0;;:::o;26756:200::-;25792:10;26836:15;25779:24;;;;;;;;;;;;;25771:33;;;;;;;;26854:39;;;;;;26887:4;26854:39;;;;;;-1:-1:-1;;;;;26854:24:0;;;;;:39;;;;;;;;;;;;;;-1:-1:-1;26854:24:0;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;26854:39:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26854:39:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;26854:39:0;26904:44;;;;;;26928:10;26904:44;;;;;;;;;;;;26854:39;;-1:-1:-1;;;;;;26904:23:0;;;;;:44;;;;;26854:39;;26904:44;;;;;;;;-1:-1:-1;26904:23:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;26904:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;26904:44:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;26756:200:0:o;31078:173::-;31152:1;31136:4;31128:21;:25;31124:120;;;31187:12;;31179:53;;-1:-1:-1;;;;;31187:12:0;;;;;;;;;31218:4;31210:21;31179:53;;;;;;;;;31210:21;31187:12;31179:53;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;32930:334:0;33018:13;33053:16;;;;33049:208;;;33102:32;33117:7;33126;33102:14;:32::i;:::-;33095:39;;;;33049:208;33199:45;33214:7;33223:11;33236:7;33199:14;:45::i;33272:204::-;33376:5;;:40;;;;;;;;;;;;-1:-1:-1;;;;;33376:40:0;;;;;;;;;33345:13;;33376:5;;;;;:22;;:40;;;;;33345:13;;33376:40;;;;;;;;33345:13;33376:5;:40;;;5:2:-1;;;;30:1;27;20:12;5:2;33376:40:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33376:40:0;;;;33441:12;;;;;;;;;-1:-1:-1;;;;;33441:12:0;-1:-1:-1;;;;;33441:24:0;;:26;;;;;-1:-1:-1;;;33441:26:0;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33441:26:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;33441:26:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33441:26:0;;33272:204;-1:-1:-1;;;33272:204:0:o;34195:739::-;34288:13;34319:12;34361;34334:16;:14;:16::i;:::-;34319:31;;34376:16;:14;:16::i;:::-;34405:12;;:44;;;;;;;;;;;;;-1:-1:-1;34405:44:0;;;;;;;;34361:31;;-1:-1:-1;34405:12:0;;;;-1:-1:-1;;;;;34405:12:0;;:34;;:44;;;;;-1:-1:-1;34405:44:0;;;;;;-1:-1:-1;34405:12:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;34405:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34460:12:0;;:44;;;;;;;;;;;;;-1:-1:-1;34460:44:0;;;;;;;;:12;;;;-1:-1:-1;;;;;34460:12:0;;-1:-1:-1;34460:34:0;;-1:-1:-1;34460:44:0;;;;;;;;;;;-1:-1:-1;34460:12:0;:44;;;5:2:-1;;;;30:1;27;20:12;5:2;34460:44:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34515:12:0;;:42;;;;;;;;;;;;;-1:-1:-1;34515:42:0;;;;;;;;:12;;;;-1:-1:-1;;;;;34515:12:0;;-1:-1:-1;34515:32:0;;-1:-1:-1;34515:42:0;;;;;;;;;;;-1:-1:-1;34515:12:0;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;34515:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34568:12:0;;:42;;;;;;;;;;;;;-1:-1:-1;34568:42:0;;;;;;;;:12;;;;-1:-1:-1;;;;;34568:12:0;;-1:-1:-1;34568:32:0;;-1:-1:-1;34568:42:0;;;;;;;;;;;-1:-1:-1;34568:12:0;:42;;;5:2:-1;;;;30:1;27;20:12;5:2;34568:42:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34632:12:0;;:36;;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;34632:12:0;;-1:-1:-1;34632:22:0;;-1:-1:-1;34632:36:0;;;;;;;;;;;;;;;-1:-1:-1;34632:12:0;:36;;;5:2:-1;;;;30:1;27;20:12;5:2;34632:36:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;34632:36:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34632:36:0;34681:12;;:53;;;;;;;;;;;;;;;;;;;;;;34632:36;;-1:-1:-1;34681:12:0;;;;-1:-1:-1;;;;;34681:12:0;;:32;;:53;;;;;-1:-1:-1;;34681:53:0;;;;;;;;-1:-1:-1;34681:12:0;:53;;;5:2:-1;;;;30:1;27;20:12;5:2;34681:53:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34745:12:0;;:50;;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;34745:12:0;;-1:-1:-1;34745:29:0;;-1:-1:-1;34745:50:0;;;;;-1:-1:-1;;34745:50:0;;;;;;;;-1:-1:-1;34745:12:0;:50;;;5:2:-1;;;;30:1;27;20:12;5:2;34745:50:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34808:12:0;;:41;;;;;;;;;;;;;;;;;;;;;:12;;;;-1:-1:-1;;;;;34808:12:0;;-1:-1:-1;34808:24:0;;-1:-1:-1;34808:41:0;;;;;-1:-1:-1;;34808:41:0;;;;;;;;-1:-1:-1;34808:12:0;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;34808:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;34862:12:0;;:38;;;;;;-1:-1:-1;;;;;34862:38:0;;;;;;;;;;;;;;;;:12;;;;;;;;-1:-1:-1;34862:21:0;;-1:-1:-1;34862:38:0;;;;;-1:-1:-1;;34862:38:0;;;;;;;;-1:-1:-1;34862:12:0;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;34862:38:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;;;34195:739:0;;;;;;;:::o;33955:232::-;33999:13;34039:7;34047:11;;34039:20;;;;;;;;;;;;;;;;;;;;;;;;;;;34070:13;;;;;;;34113:7;:14;34039:20;;;;;;;;;;;;-1:-1:-1;;34094:86:0;;34167:1;34153:11;:15;33955:232;:::o;31681:3615::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Swarm Source
bzzr://ecdec03e9e70c0728410da6a26f17739c4ea33081cff9e06936751b706af1825
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.01
Net Worth in ETH
0.000004
Token Allocations
POL
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| POL | 100.00% | $0.096557 | 0.1 | $0.009656 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.