Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 11 from a total of 11 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Accept Offer | 9823945 | 2154 days ago | IN | 0 ETH | 0.00054882 | ||||
| Add Offer | 9823943 | 2154 days ago | IN | 0 ETH | 0.00070995 | ||||
| Accept Offer | 9819920 | 2155 days ago | IN | 0 ETH | 0.00045735 | ||||
| Add Offer | 9819895 | 2155 days ago | IN | 0 ETH | 0.00059162 | ||||
| Add Offer | 9819860 | 2155 days ago | IN | 0 ETH | 0.00035497 | ||||
| Add Offer | 9818995 | 2155 days ago | IN | 0 ETH | 0.00029578 | ||||
| Add Offer | 9715084 | 2171 days ago | IN | 0 ETH | 0.00029581 | ||||
| Accept Offer | 9690770 | 2175 days ago | IN | 0 ETH | 0.00026617 | ||||
| Add Offer | 9690767 | 2175 days ago | IN | 0 ETH | 0.00029581 | ||||
| Add Offer | 9677413 | 2177 days ago | IN | 0 ETH | 0.00006325 | ||||
| Add Offer | 9677300 | 2177 days ago | IN | 0 ETH | 0.00033328 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PhotochainMarketplace
Compiler Version
v0.4.24+commit.e67f0147
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.4.24;
import "./PhotonTestToken.sol";
/**
* @title PhotochainMarketplace
* @dev Marketplace to make and accept offers using PhotonToken
*/
contract PhotochainMarketplace is Ownable {
/**
* Event for offer creation logging
* @param id Generated unique offer id
* @param seller Addess of seller of the photo
* @param licenseType Which license is applied on the offer
* @param photoDigest 256-bit hash of the photo
* @param price How many tokens to pay to accept the offer
*/
event OfferAdded(
bytes32 indexed id,
address indexed seller,
uint8 licenseType,
bytes32 photoDigest,
uint256 price
);
/**
* Event for offer acceptance logging
* @param id Offer id to accept
* @param licensee Address of the account that bought license
*/
event OfferAccepted(bytes32 indexed id, address indexed licensee);
/**
* Event for offer price change
* @param id Offer id to update
* @param oldPrice Previous price in tokens
* @param newPrice New price in tokens
*/
event OfferPriceChanged(bytes32 indexed id, uint256 oldPrice, uint256 newPrice);
/**
* Event for offer cancellation
* @param id Offer id to cancel
*/
event OfferCancelled(bytes32 indexed id);
struct Offer {
address seller;
uint8 licenseType;
bool isCancelled;
bytes32 photoDigest;
uint256 price;
}
ERC20 public token;
// List of the offers
mapping(bytes32 => Offer) public offers;
// List of offer ids by seller
mapping(address => bytes32[]) public offersBySeller;
// List of offer ids by licensee
mapping(address => bytes32[]) public offersByLicensee;
modifier onlyValidAddress(address _addr) {
require(_addr != address(0), "Invalid address");
_;
}
modifier onlyActiveOffer(bytes32 _id) {
require(offers[_id].seller != address(0), "Offer does not exists");
require(!offers[_id].isCancelled, "Offer is cancelled");
_;
}
/**
* @param _token Address of the PhotonToken contract
*/
constructor(ERC20 _token) public onlyValidAddress(address(_token)) {
token = _token;
}
/**
@dev Sets accounting token address
* @param _token Address of the PhotonToken contract
*/
function setToken(ERC20 _token)
external
onlyOwner
onlyValidAddress(address(_token))
{
token = _token;
}
/**
* @dev Add an offer to the marketplace
* @param _seller Address of the photo author
* @param _licenseType License type for the offer
* @param _photoDigest 256-bit hash of the photo
* @param _price Price of the offer
*/
function addOffer(
address _seller,
uint8 _licenseType,
bytes32 _photoDigest,
uint256 _price
)
external
onlyOwner
onlyValidAddress(_seller)
{
bytes32 _id = keccak256(
abi.encodePacked(
_seller,
_licenseType,
_photoDigest
)
);
require(offers[_id].seller == address(0), "Offer already exists");
offersBySeller[_seller].push(_id);
offers[_id] = Offer({
seller: _seller,
licenseType: _licenseType,
isCancelled: false,
photoDigest: _photoDigest,
price: _price
});
emit OfferAdded(_id, _seller, _licenseType, _photoDigest, _price);
}
/**
* @dev Accept an offer on the marketplace
* @param _id Offer id
* @param _licensee Address of the licensee that is buying the photo
*/
function acceptOffer(bytes32 _id, address _licensee)
external
onlyOwner
onlyValidAddress(_licensee)
onlyActiveOffer(_id)
{
Offer storage offer = offers[_id];
if (offer.price > 0) {
require(
token.transferFrom(_licensee, address(this), offer.price),
"Token transfer to contract failed"
);
require(
token.transfer(offer.seller, offer.price),
"Token transfer to seller failed"
);
}
offersByLicensee[_licensee].push(_id);
emit OfferAccepted(_id, _licensee);
}
/**
* @dev Change price of the offer
* @param _id Offer id
* @param _price Price of the offer in tokens
*/
function setOfferPrice(bytes32 _id, uint256 _price)
external
onlyOwner
onlyActiveOffer(_id)
{
uint256 oldPrice = offers[_id].price;
offers[_id].price = _price;
emit OfferPriceChanged(_id, oldPrice, _price);
}
/**
* @dev Cancel offer
* @param _id Offer id
*/
function cancelOffer(bytes32 _id)
external
onlyOwner
onlyActiveOffer(_id)
{
offers[_id].isCancelled = true;
emit OfferCancelled(_id);
}
/**
* @dev Get list of offers id from a seller
* @param _seller The address of the seller to find its offers
* @return Offer ids
*/
function getOffers(address _seller) external view returns (bytes32[] memory) {
return offersBySeller[_seller];
}
/**
* @dev Get the offer by id
* @param _id The offer id
* @return Offer details
*/
function getOfferById(bytes32 _id)
external
view
returns (
address seller,
uint8 licenseType,
bool isCancelled,
bytes32 photoDigest,
uint256 price
)
{
Offer storage offer = offers[_id];
seller = offer.seller;
licenseType = offer.licenseType;
isCancelled = offer.isCancelled;
photoDigest = offer.photoDigest;
price = offer.price;
}
/**
* @dev Get the list of the offers id by a licensee
* @param _licensee Address of a licensee of offers
*/
function getLicenses(address _licensee)
external
view
returns (bytes32[] memory)
{
return offersByLicensee[_licensee];
}
}
pragma solidity >=0.4.22 <0.6.0;
contract Migrations {
address public owner;
uint256 public last_completed_migration;
modifier restricted() {
if (msg.sender == owner) _;
}
constructor() public {
owner = msg.sender;
}
function setCompleted(uint completed) public restricted {
last_completed_migration = completed;
}
function upgrade(address new_address) public restricted {
Migrations upgraded = Migrations(new_address);
upgraded.setCompleted(last_completed_migration);
}
}
/**
*Submitted for verification at Etherscan.io on 2018-09-30
*/
pragma solidity ^0.4.24;
/**
* @title ERC20 interface
* @dev see https://github.com/ethereum/EIPs/issues/20
*/
contract ERC20 {
event Transfer(address indexed from, address indexed to, uint256 value);
event Approval(address indexed owner, address indexed spender, uint256 value);
function totalSupply() public view returns (uint256);
function balanceOf(address who) public view returns (uint256);
function transfer(address to, uint256 value) public returns (bool);
function allowance(address owner, address spender) public view returns (uint256);
function transferFrom(address from, address to, uint256 value) public returns (bool);
function approve(address spender, uint256 value) public returns (bool);
}
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
* @dev Based on https://github.com/OpenZeppelin/zeppelin-solidity
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
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;
}
/**
* @dev Integer division of two numbers, truncating the quotient.
*/
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 a / b;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
/**
* @title Standard ERC20 token
*
* @dev Implementation of the basic standard token.
* @dev Based on https://github.com/OpenZeppelin/zeppelin-solidity
*/
contract StandardToken is ERC20 {
using SafeMath for uint256;
uint256 internal _totalSupply;
mapping(address => uint256) internal _balanceOf;
mapping (address => mapping (address => uint256)) internal _allowance;
modifier onlyValidAddress(address addr) {
require(addr != address(0), "Address cannot be zero");
_;
}
modifier onlySufficientBalance(address from, uint256 value) {
require(value <= _balanceOf[from], "Insufficient balance");
_;
}
modifier onlySufficientAllowance(address owner, address spender, uint256 value) {
require(value <= _allowance[owner][spender], "Insufficient allowance");
_;
}
/**
* @dev Transfers token to the specified address
* @param to The address to transfer to.
* @param value The amount to be transferred.
*/
function transfer(address to, uint256 value)
public
onlyValidAddress(to)
onlySufficientBalance(msg.sender, value)
returns (bool)
{
_balanceOf[msg.sender] = _balanceOf[msg.sender].sub(value);
_balanceOf[to] = _balanceOf[to].add(value);
emit Transfer(msg.sender, to, value);
return true;
}
/**
* @dev Transfers tokens from one address to another
* @param from address The address which you want to send tokens from
* @param to address The address which you want to transfer to
* @param value uint256 the amount of tokens to be transferred
*/
function transferFrom(address from, address to, uint256 value)
public
onlyValidAddress(to)
onlySufficientBalance(from, value)
onlySufficientAllowance(from, msg.sender, value)
returns (bool)
{
_balanceOf[from] = _balanceOf[from].sub(value);
_balanceOf[to] = _balanceOf[to].add(value);
_allowance[from][msg.sender] = _allowance[from][msg.sender].sub(value);
emit Transfer(from, to, value);
return true;
}
/**
* @dev Approves the passed address to spend the 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 unfortunate transaction ordering. One possible solution to mitigate this
* race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:
* https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
* @param spender The address which will spend the funds.
* @param value The amount of tokens to be spent.
*/
function approve(address spender, uint256 value)
public
onlyValidAddress(spender)
returns (bool)
{
_allowance[msg.sender][spender] = value;
emit Approval(msg.sender, spender, value);
return true;
}
/**
* @dev Increases the amount of tokens that an owner allowed to a spender.
*
* approve should be called when _allowance[spender] == 0. To increment
* allowed value 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 funds.
* @param addedValue The amount of tokens to increase the allowance by.
*/
function increaseAllowance(address spender, uint256 addedValue)
public
onlyValidAddress(spender)
returns (bool)
{
_allowance[msg.sender][spender] = _allowance[msg.sender][spender].add(addedValue);
emit Approval(msg.sender, spender, _allowance[msg.sender][spender]);
return true;
}
/**
* @dev Decreases the amount of tokens that an owner allowed to a spender.
*
* approve should be called when _allowance[spender] == 0. To decrement
* allowed value 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 funds.
* @param subtractedValue The amount of tokens to decrease the allowance by.
*/
function decreaseAllowance(address spender, uint256 subtractedValue)
public
onlyValidAddress(spender)
onlySufficientAllowance(msg.sender, spender, subtractedValue)
returns (bool)
{
_allowance[msg.sender][spender] = _allowance[msg.sender][spender].sub(subtractedValue);
emit Approval(msg.sender, spender, _allowance[msg.sender][spender]);
return true;
}
/**
* @dev Gets total number of tokens in existence
*/
function totalSupply() public view returns (uint256) {
return _totalSupply;
}
/**
* @dev Gets the balance of the specified address.
* @param owner The address to query the the balance of.
* @return An uint256 representing the amount owned by the passed address.
*/
function balanceOf(address owner) public view returns (uint256) {
return _balanceOf[owner];
}
/**
* @dev Checks the amount of tokens that an owner allowed to a spender.
* @param owner address The address which owns the funds.
* @param spender address The address which will spend the funds.
* @return A uint256 specifying the amount of tokens still available for the spender.
*/
function allowance(address owner, address spender) public view returns (uint256) {
return _allowance[owner][spender];
}
}
/**
* @title Ownable
* @dev The Ownable contract has an owner address, and provides basic authorization control
* functions, this simplifies the implementation of "user permissions".
* @dev Based on https://github.com/OpenZeppelin/zeppelin-soliditysettable
*/
contract Ownable {
address public owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
modifier onlyOwner() {
require(msg.sender == owner, "Can only be called by the owner");
_;
}
modifier onlyValidAddress(address addr) {
require(addr != address(0), "Address cannot be zero");
_;
}
/**
* @dev The Ownable constructor sets the original `owner` of the contract to the sender
* account.
*/
constructor() public {
owner = msg.sender;
}
/**
* @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
onlyValidAddress(newOwner)
{
emit OwnershipTransferred(owner, newOwner);
owner = newOwner;
}
}
/**
* @title Mintable token
* @dev Standard token with minting
* @dev Based on https://github.com/OpenZeppelin/zeppelin-solidity
*/
contract MintableToken is StandardToken, Ownable {
bool public mintingFinished;
uint256 public cap;
event Mint(address indexed to, uint256 amount);
event MintFinished();
modifier onlyMinting() {
require(!mintingFinished, "Minting is already finished");
_;
}
modifier onlyNotExceedingCap(uint256 amount) {
require(_totalSupply.add(amount) <= cap, "Total supply must not exceed cap");
_;
}
constructor(uint256 _cap) public {
cap = _cap;
}
/**
* @dev Creates new tokens for the given address
* @param to The address that will receive the minted tokens.
* @param amount The amount of tokens to mint.
* @return A boolean that indicates if the operation was successful.
*/
function mint(address to, uint256 amount)
public
onlyOwner
onlyMinting
onlyValidAddress(to)
onlyNotExceedingCap(amount)
returns (bool)
{
mintImpl(to, amount);
return true;
}
/**
* @dev Creates new tokens for the given addresses
* @param addresses The array of addresses that will receive the minted tokens.
* @param amounts The array of amounts of tokens to mint.
* @return A boolean that indicates if the operation was successful.
*/
function mintMany(address[] addresses, uint256[] amounts)
public
onlyOwner
onlyMinting
onlyNotExceedingCap(sum(amounts))
returns (bool)
{
require(
addresses.length == amounts.length,
"Addresses array must be the same size as amounts array"
);
for (uint256 i = 0; i < addresses.length; i++) {
require(addresses[i] != address(0), "Address cannot be zero");
mintImpl(addresses[i], amounts[i]);
}
return true;
}
/**
* @dev Stops minting new tokens.
* @return True if the operation was successful.
*/
function finishMinting()
public
onlyOwner
onlyMinting
returns (bool)
{
mintingFinished = true;
emit MintFinished();
return true;
}
function mintImpl(address to, uint256 amount) private {
_totalSupply = _totalSupply.add(amount);
_balanceOf[to] = _balanceOf[to].add(amount);
emit Mint(to, amount);
emit Transfer(address(0), to, amount);
}
function sum(uint256[] arr) private pure returns (uint256) {
uint256 aggr = 0;
for (uint256 i = 0; i < arr.length; i++) {
aggr = aggr.add(arr[i]);
}
return aggr;
}
}
contract PhotonTestToken is MintableToken {
string public name = "PhotonTestToken";
string public symbol = "PHT";
uint256 public decimals = 18;
uint256 public cap = 120 * 10**6 * 10**decimals;
// solhint-disable-next-line no-empty-blocks
constructor() public MintableToken(cap) {}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":false,"inputs":[{"name":"_token","type":"address"}],"name":"setToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_licensee","type":"address"}],"name":"getLicenses","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_seller","type":"address"}],"name":"getOffers","outputs":[{"name":"","type":"bytes32[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"offers","outputs":[{"name":"seller","type":"address"},{"name":"licenseType","type":"uint8"},{"name":"isCancelled","type":"bool"},{"name":"photoDigest","type":"bytes32"},{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_id","type":"bytes32"}],"name":"getOfferById","outputs":[{"name":"seller","type":"address"},{"name":"licenseType","type":"uint8"},{"name":"isCancelled","type":"bool"},{"name":"photoDigest","type":"bytes32"},{"name":"price","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"bytes32"},{"name":"_price","type":"uint256"}],"name":"setOfferPrice","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"offersBySeller","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_seller","type":"address"},{"name":"_licenseType","type":"uint8"},{"name":"_photoDigest","type":"bytes32"},{"name":"_price","type":"uint256"}],"name":"addOffer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"offersByLicensee","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"bytes32"}],"name":"cancelOffer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"token","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_id","type":"bytes32"},{"name":"_licensee","type":"address"}],"name":"acceptOffer","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_token","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"bytes32"},{"indexed":true,"name":"seller","type":"address"},{"indexed":false,"name":"licenseType","type":"uint8"},{"indexed":false,"name":"photoDigest","type":"bytes32"},{"indexed":false,"name":"price","type":"uint256"}],"name":"OfferAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"bytes32"},{"indexed":true,"name":"licensee","type":"address"}],"name":"OfferAccepted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"bytes32"},{"indexed":false,"name":"oldPrice","type":"uint256"},{"indexed":false,"name":"newPrice","type":"uint256"}],"name":"OfferPriceChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"id","type":"bytes32"}],"name":"OfferCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previousOwner","type":"address"},{"indexed":true,"name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"}]Contract Creation Code
608060405234801561001057600080fd5b506040516020806120ce83398101806040528101908080519060200190929190505050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610119576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050611f638061016b6000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063144fa6d7146100d557806314773b4f146101185780632d86c000146101b0578063474d3ff0146102485780634be974b5146102e75780638da5cb5b146103865780638ea00e50146103dd5780639bdfdcea14610418578063cb4e9d0b14610481578063deb5a85d146104e9578063f2fde38b14610552578063f952279e14610595578063fc0c546a146105c6578063fcc959de1461061d575b600080fd5b3480156100e157600080fd5b50610116600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061066e565b005b34801561012457600080fd5b50610159600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061081d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561019c578082015181840152602081019050610181565b505050509050019250505060405180910390f35b3480156101bc57600080fd5b506101f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610234578082015181840152602081019050610219565b505050509050019250505060405180910390f35b34801561025457600080fd5b506102776004803603810190808035600019169060200190929190505050610953565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff1681526020018415151515815260200183600019166000191681526020018281526020019550505050505060405180910390f35b3480156102f357600080fd5b5061031660048036038101908080356000191690602001909291905050506109c3565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff1681526020018415151515815260200183600019166000191681526020018281526020019550505050505060405180910390f35b34801561039257600080fd5b5061039b610a50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103e957600080fd5b50610416600480360381019080803560001916906020019092919080359060200190929190505050610a75565b005b34801561042457600080fd5b50610463600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d4e565b60405180826000191660001916815260200191505060405180910390f35b34801561048d57600080fd5b506104e7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080359060200190929190505050610d7e565b005b3480156104f557600080fd5b50610534600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112bb565b60405180826000191660001916815260200191505060405180910390f35b34801561055e57600080fd5b50610593600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112eb565b005b3480156105a157600080fd5b506105c46004803603810190808035600019169060200190929190505050611514565b005b3480156105d257600080fd5b506105db6117c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561062957600080fd5b5061066c6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117ef565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6060600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156108ac57602002820191906000526020600020905b81546000191681526020019060010190808311610894575b50505050509050919050565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561094757602002820191906000526020600020905b8154600019168152602001906001019080831161092f575b50505050509050919050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16908060010154908060020154905085565b60008060008060008060026000886000191660001916815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1695508060000160149054906101000a900460ff1694508060000160159054906101000a900460ff16935080600101549250806002015491505091939590929450565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610c1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6666657220646f6573206e6f7420657869737473000000000000000000000081525060200191505060405180910390fd5b60026000826000191660001916815260200190815260200160002060000160159054906101000a900460ff16151515610cc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f666665722069732063616e63656c6c6564000000000000000000000000000081525060200191505060405180910390fd5b600260008560001916600019168152602001908152602001600020600201549150826002600086600019166000191681526020019081526020016000206002018190555083600019167f9195869d69003aa51093e68a96ef2382fe9857e108595d2a809d8e8e8ac4ca668385604051808381526020018281526020019250505060405180910390a250505050565b600360205281600052604060002081815481101515610d6957fe5b90600052602060002001600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b84600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610eea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018360ff1660ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101826000191660001916815260200193505050506040516020818303038152906040526040518082805190602001908083835b602083101515610fba5780518252602082019150602081019050602083039250610f95565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600073ffffffffffffffffffffffffffffffffffffffff1660026000846000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4f6666657220616c72656164792065786973747300000000000000000000000081525060200191505060405180910390fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505090600182039060005260206000200160009091929091909150906000191690555060a0604051908101604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018660ff168152602001600015158152602001856000191681526020018481525060026000846000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff02191690831515021790555060608201518160010190600019169055608082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff1682600019167f90a4d2855f37c47208b89b061e931287fd431c927224857dbe22f7b3d06ee65c878787604051808460ff1660ff1681526020018360001916600019168152602001828152602001935050505060405180910390a3505050505050565b6004602052816000526040600020818154811015156112d657fe5b90600052602060002001600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6666657220646f6573206e6f7420657869737473000000000000000000000081525060200191505060405180910390fd5b60026000826000191660001916815260200190815260200160002060000160159054906101000a900460ff1615151561175d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f666665722069732063616e63656c6c6564000000000000000000000000000081525060200191505060405180910390fd5b600160026000846000191660001916815260200190815260200160002060000160156101000a81548160ff02191690831515021790555081600019167f3f9cb69d022b6ec319f86f2df848bcce01f2fc51c9f86396779a8081cf6ca2ea60405160405180910390a25050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561195b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b83600073ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611a3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6666657220646f6573206e6f7420657869737473000000000000000000000081525060200191505060405180910390fd5b60026000826000191660001916815260200190815260200160002060000160159054906101000a900460ff16151515611ae0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f666665722069732063616e63656c6c6564000000000000000000000000000081525060200191505060405180910390fd5b6002600086600019166000191681526020019081526020016000209250600083600201541115611e7957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd853086600201546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c0757600080fd5b505af1158015611c1b573d6000803e3d6000fd5b505050506040513d6020811015611c3157600080fd5b81019080805190602001909291905050501515611cdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546f6b656e207472616e7366657220746f20636f6e7472616374206661696c6581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611dc957600080fd5b505af1158015611ddd573d6000803e3d6000fd5b505050506040513d6020811015611df357600080fd5b81019080805190602001909291905050501515611e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546f6b656e207472616e7366657220746f2073656c6c6572206661696c65640081525060200191505060405180910390fd5b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915090600019169055508373ffffffffffffffffffffffffffffffffffffffff1685600019167f303659100dbf95fc215273ece99e4632c7fa38534669c7646ce76b7cfc92a91c60405160405180910390a350505050505600a165627a7a723058201063abc26092b2aa3492b92f9e141b5fd4d7dee7eb53b9b2e7bc10d3208e0a67002900000000000000000000000088652845a5495983b70aebbf25102361552d5e54
Deployed Bytecode
0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063144fa6d7146100d557806314773b4f146101185780632d86c000146101b0578063474d3ff0146102485780634be974b5146102e75780638da5cb5b146103865780638ea00e50146103dd5780639bdfdcea14610418578063cb4e9d0b14610481578063deb5a85d146104e9578063f2fde38b14610552578063f952279e14610595578063fc0c546a146105c6578063fcc959de1461061d575b600080fd5b3480156100e157600080fd5b50610116600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061066e565b005b34801561012457600080fd5b50610159600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061081d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561019c578082015181840152602081019050610181565b505050509050019250505060405180910390f35b3480156101bc57600080fd5b506101f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108b8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610234578082015181840152602081019050610219565b505050509050019250505060405180910390f35b34801561025457600080fd5b506102776004803603810190808035600019169060200190929190505050610953565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff1681526020018415151515815260200183600019166000191681526020018281526020019550505050505060405180910390f35b3480156102f357600080fd5b5061031660048036038101908080356000191690602001909291905050506109c3565b604051808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018560ff1660ff1681526020018415151515815260200183600019166000191681526020018281526020019550505050505060405180910390f35b34801561039257600080fd5b5061039b610a50565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103e957600080fd5b50610416600480360381019080803560001916906020019092919080359060200190929190505050610a75565b005b34801561042457600080fd5b50610463600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610d4e565b60405180826000191660001916815260200191505060405180910390f35b34801561048d57600080fd5b506104e7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190803560001916906020019092919080359060200190929190505050610d7e565b005b3480156104f557600080fd5b50610534600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506112bb565b60405180826000191660001916815260200191505060405180910390f35b34801561055e57600080fd5b50610593600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112eb565b005b3480156105a157600080fd5b506105c46004803603810190808035600019169060200190929190505050611514565b005b3480156105d257600080fd5b506105db6117c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561062957600080fd5b5061066c6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117ef565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515156107d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6060600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054806020026020016040519081016040528092919081815260200182805480156108ac57602002820191906000526020600020905b81546000191681526020019060010190808311610894575b50505050509050919050565b6060600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561094757602002820191906000526020600020905b8154600019168152602001906001019080831161092f575b50505050509050919050565b60026020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060000160149054906101000a900460ff16908060000160159054906101000a900460ff16908060010154908060020154905085565b60008060008060008060026000886000191660001916815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1695508060000160149054906101000a900460ff1694508060000160159054906101000a900460ff16935080600101549250806002015491505091939590929450565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b3b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b82600073ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610c1f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6666657220646f6573206e6f7420657869737473000000000000000000000081525060200191505060405180910390fd5b60026000826000191660001916815260200190815260200160002060000160159054906101000a900460ff16151515610cc0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f666665722069732063616e63656c6c6564000000000000000000000000000081525060200191505060405180910390fd5b600260008560001916600019168152602001908152602001600020600201549150826002600086600019166000191681526020019081526020016000206002018190555083600019167f9195869d69003aa51093e68a96ef2382fe9857e108595d2a809d8e8e8ac4ca668385604051808381526020018281526020019250505060405180910390a250505050565b600360205281600052604060002081815481101515610d6957fe5b90600052602060002001600091509150505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e44576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b84600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515610eea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b858585604051602001808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018360ff1660ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101826000191660001916815260200193505050506040516020818303038152906040526040518082805190602001908083835b602083101515610fba5780518252602082019150602081019050602083039250610f95565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209150600073ffffffffffffffffffffffffffffffffffffffff1660026000846000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f4f6666657220616c72656164792065786973747300000000000000000000000081525060200191505060405180910390fd5b600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002082908060018154018082558091505090600182039060005260206000200160009091929091909150906000191690555060a0604051908101604052808773ffffffffffffffffffffffffffffffffffffffff1681526020018660ff168152602001600015158152602001856000191681526020018481525060026000846000191660001916815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160000160146101000a81548160ff021916908360ff16021790555060408201518160000160156101000a81548160ff02191690831515021790555060608201518160010190600019169055608082015181600201559050508573ffffffffffffffffffffffffffffffffffffffff1682600019167f90a4d2855f37c47208b89b061e931287fd431c927224857dbe22f7b3d06ee65c878787604051808460ff1660ff1681526020018360001916600019168152602001828152602001935050505060405180910390a3505050505050565b6004602052816000526040600020818154811015156112d657fe5b90600052602060002001600091509150505481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113af576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151515611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115d8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b80600073ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156116bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6666657220646f6573206e6f7420657869737473000000000000000000000081525060200191505060405180910390fd5b60026000826000191660001916815260200190815260200160002060000160159054906101000a900460ff1615151561175d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f666665722069732063616e63656c6c6564000000000000000000000000000081525060200191505060405180910390fd5b600160026000846000191660001916815260200190815260200160002060000160156101000a81548160ff02191690831515021790555081600019167f3f9cb69d022b6ec319f86f2df848bcce01f2fc51c9f86396779a8081cf6ca2ea60405160405180910390a25050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e206f6e6c792062652063616c6c656420627920746865206f776e65720081525060200191505060405180910390fd5b81600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561195b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600f8152602001807f496e76616c69642061646472657373000000000000000000000000000000000081525060200191505060405180910390fd5b83600073ffffffffffffffffffffffffffffffffffffffff1660026000836000191660001916815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611a3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4f6666657220646f6573206e6f7420657869737473000000000000000000000081525060200191505060405180910390fd5b60026000826000191660001916815260200190815260200160002060000160159054906101000a900460ff16151515611ae0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f4f666665722069732063616e63656c6c6564000000000000000000000000000081525060200191505060405180910390fd5b6002600086600019166000191681526020019081526020016000209250600083600201541115611e7957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd853086600201546040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015611c0757600080fd5b505af1158015611c1b573d6000803e3d6000fd5b505050506040513d6020811015611c3157600080fd5b81019080805190602001909291905050501515611cdc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546f6b656e207472616e7366657220746f20636f6e7472616374206661696c6581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8460000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600201546040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611dc957600080fd5b505af1158015611ddd573d6000803e3d6000fd5b505050506040513d6020811015611df357600080fd5b81019080805190602001909291905050501515611e78576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f546f6b656e207472616e7366657220746f2073656c6c6572206661696c65640081525060200191505060405180910390fd5b5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208590806001815401808255809150509060018203906000526020600020016000909192909190915090600019169055508373ffffffffffffffffffffffffffffffffffffffff1685600019167f303659100dbf95fc215273ece99e4632c7fa38534669c7646ce76b7cfc92a91c60405160405180910390a350505050505600a165627a7a723058201063abc26092b2aa3492b92f9e141b5fd4d7dee7eb53b9b2e7bc10d3208e0a670029
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000088652845a5495983b70aebbf25102361552d5e54
-----Decoded View---------------
Arg [0] : _token (address): 0x88652845A5495983b70Aebbf25102361552D5e54
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000088652845a5495983b70aebbf25102361552d5e54
Deployed Bytecode Sourcemap
164:6084:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2400:144:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;6086:160;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6086:160:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6086:160:1;;;;;;;;;;;;;;;;;5235:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5235:124:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5235:124:1;;;;;;;;;;;;;;;;;1547:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1547:39:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5473:479;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5473:479:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8055:20:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8055:20:2;;;;;;;;;;;;;;;;;;;;;;;;;;;4549:266:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4549:266:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1628:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1628:51:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2807:785;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2807:785:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1723:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1723:53:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8768:203:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8768:203:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;4889:184:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4889:184:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1496:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1496:18:1;;;;;;;;;;;;;;;;;;;;;;;;;;;3761:651;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3761:651:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2400:144;8225:5:2;;;;;;;;;;;8211:19;;:10;:19;;;8203:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2500:6:1;1859:1;1842:19;;:5;:19;;;;1834:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2531:6;2523:5;;:14;;;;;;;;;;;;;;;;;;8276:1:2;2400:144:1;:::o;6086:160::-;6173:9;6212:16;:27;6229:9;6212:27;;;;;;;;;;;;;;;6205:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6086:160;;;:::o;5235:124::-;5294:9;5329:14;:23;5344:7;5329:23;;;;;;;;;;;;;;;5322:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5235:124;;;:::o;1547:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5473:479::-;5568:14;5596:17;5627:16;5657:19;5690:13;5728:19;5750:6;:11;5757:3;5750:11;;;;;;;;;;;;;;;;;5728:33;;5781:5;:12;;;;;;;;;;;;5772:21;;5817:5;:17;;;;;;;;;;;;5803:31;;5858:5;:17;;;;;;;;;;;;5844:31;;5899:5;:17;;;5885:31;;5934:5;:11;;;5926:19;;5473:479;;;;;;;;:::o;8055:20:2:-;;;;;;;;;;;;;:::o;4549:266:1:-;4679:16;8225:5:2;;;;;;;;;;;8211:19;;:10;:19;;;8203:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4660:3:1;1991:1;1961:32;;:6;:11;1968:3;1961:11;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;:32;;;;1953:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:6;:11;2045:3;2038:11;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;2037:24;2029:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4698:6;:11;4705:3;4698:11;;;;;;;;;;;;;;;;;:17;;;4679:36;;4746:6;4726;:11;4733:3;4726:11;;;;;;;;;;;;;;;;;:17;;:26;;;;4786:3;4768:40;;;;4791:8;4801:6;4768:40;;;;;;;;;;;;;;;;;;;;;;;;8276:1:2;4549:266:1;;;:::o;1628:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2807:785::-;3021:11;8225:5:2;;;;;;;;;;;8211:19;;:10;:19;;;8203:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2998:7:1;1859:1;1842:19;;:5;:19;;;;1834:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3092:7;3117:12;3147;3058:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3058:115:1;;;3035:148;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3035:148:1;;;;;;;;;;;;;;;;3021:162;;3231:1;3201:32;;:6;:11;3208:3;3201:11;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;:32;;;3193:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3269:14;:23;3284:7;3269:23;;;;;;;;;;;;;;;3298:3;3269:33;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;3269:33:1;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:183;;;;;;;;;3354:7;3326:183;;;;;;3388:12;3326:183;;;;;;3427:5;3326:183;;;;;;3459:12;3326:183;;;;;;;3492:6;3326:183;;;3312:6;:11;3319:3;3312:11;;;;;;;;;;;;;;;;;:197;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3541:7;3525:60;;3536:3;3525:60;;;;3550:12;3564;3578:6;3525:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8276:1:2;2807:785:1;;;;;:::o;1723:53::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8768:203:2:-;8225:5;;;;;;;;;;;8211:19;;:10;:19;;;8203:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8871:8;1859:1:1;1842:19;;:5;:19;;;;1834:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8928:8:2;8900:37;;8921:5;;;;;;;;;;;8900:37;;;;;;;;;;;;8956:8;8948:5;;:16;;;;;;;;;;;;;;;;;;8276:1;8768:203;:::o;4889:184:1:-;8225:5:2;;;;;;;;;;;8211:19;;:10;:19;;;8203:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4982:3:1;1991:1;1961:32;;:6;:11;1968:3;1961:11;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;:32;;;;1953:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:6;:11;2045:3;2038:11;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;2037:24;2029:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5027:4;5001:6;:11;5008:3;5001:11;;;;;;;;;;;;;;;;;:23;;;:30;;;;;;;;;;;;;;;;;;5062:3;5047:19;;;;;;;;;;;;;8276:1:2;4889:184:1;:::o;1496:18::-;;;;;;;;;;;;;:::o;3761:651::-;3928:19;8225:5:2;;;;;;;;;;;8211:19;;:10;:19;;;8203:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3874:9:1;1859:1;1842:19;;:5;:19;;;;1834:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3909:3;1991:1;1961:32;;:6;:11;1968:3;1961:11;;;;;;;;;;;;;;;;;:18;;;;;;;;;;;;:32;;;;1953:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2038:6;:11;2045:3;2038:11;;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;2037:24;2029:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3950:6;:11;3957:3;3950:11;;;;;;;;;;;;;;;;;3928:33;;3990:1;3976:5;:11;;;:15;3972:341;;;4032:5;;;;;;;;;;;:18;;;4051:9;4070:4;4077:5;:11;;;4032:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4032:57:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4032:57:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4032:57:1;;;;;;;;;;;;;;;;4007:149;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4196:5;;;;;;;;;;;:14;;;4211:5;:12;;;;;;;;;;;;4225:5;:11;;;4196:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4196:41:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4196:41:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4196:41:1;;;;;;;;;;;;;;;;4171:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3972:341;4323:16;:27;4340:9;4323:27;;;;;;;;;;;;;;;4356:3;4323:37;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;4323:37:1;;;;;;;;;;;;;;;;;;;;;;;;;;;4395:9;4376:29;;4390:3;4376:29;;;;;;;;;;;;;1891:1;8276::2;3761:651:1;;;:::o
Swarm Source
bzzr://1063abc26092b2aa3492b92f9e141b5fd4d7dee7eb53b9b2e7bc10d3208e0a67
Loading...
Loading
Loading...
Loading
OVERVIEW
This contract handles the marketplace transactions by storing licenses and copyright information of photographyNet Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
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.