Source Code
Latest 8 from a total of 8 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Harvest | 11080119 | 1971 days ago | IN | 0 ETH | 0.0025202 | ||||
| Harvest | 11080077 | 1971 days ago | IN | 0 ETH | 0.00374424 | ||||
| Harvest | 11079814 | 1971 days ago | IN | 0 ETH | 0.00195315 | ||||
| Farm | 11079785 | 1971 days ago | IN | 0 ETH | 0.00362 | ||||
| Farm | 11079410 | 1971 days ago | IN | 0 ETH | 0.00766246 | ||||
| Farm | 11079188 | 1971 days ago | IN | 0 ETH | 0.00460609 | ||||
| Allow Staking | 11078749 | 1971 days ago | IN | 0 ETH | 0.00136973 | ||||
| Set Token Addres... | 11078722 | 1971 days ago | IN | 0 ETH | 0.00139456 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
MinionStaking
Compiler Version
v0.6.12+commit.27d51765
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2020-10-18
*/
pragma solidity 0.6.12;
// SPDX-License-Identifier: BSD-3-Clause
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
// assert(b > 0); // Solidity automatically throws when dividing by 0
uint256 c = a / b;
// assert(a == b * c + a % b); // There is no case in which this doesn't hold
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
/**
* @dev Library for managing
* https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive
* types.
*
* Sets have the following properties:
*
* - Elements are added, removed, and checked for existence in constant time
* (O(1)).
* - Elements are enumerated in O(n). No guarantees are made on the ordering.
*
* ```
* contract Example {
* // Add the library methods
* using EnumerableSet for EnumerableSet.AddressSet;
*
* // Declare a set state variable
* EnumerableSet.AddressSet private mySet;
* }
* ```
*
* As of v3.0.0, only sets of type `address` (`AddressSet`) and `uint256`
* (`UintSet`) are supported.
*/
library EnumerableSet {
// To implement this library for multiple types with as little code
// repetition as possible, we write it in terms of a generic Set type with
// bytes32 values.
// The Set implementation uses private functions, and user-facing
// implementations (such as AddressSet) are just wrappers around the
// underlying Set.
// This means that we can only create new EnumerableSets for types that fit
// in bytes32.
struct Set {
// Storage of set values
bytes32[] _values;
// Position of the value in the `values` array, plus 1 because index 0
// means a value is not in the set.
mapping (bytes32 => uint256) _indexes;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function _add(Set storage set, bytes32 value) private returns (bool) {
if (!_contains(set, value)) {
set._values.push(value);
// The value is stored at length-1, but we add 1 to all indexes
// and use 0 as a sentinel value
set._indexes[value] = set._values.length;
return true;
} else {
return false;
}
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function _remove(Set storage set, bytes32 value) private returns (bool) {
// We read and store the value's index to prevent multiple reads from the same storage slot
uint256 valueIndex = set._indexes[value];
if (valueIndex != 0) { // Equivalent to contains(set, value)
// To delete an element from the _values array in O(1), we swap the element to delete with the last one in
// the array, and then remove the last element (sometimes called as 'swap and pop').
// This modifies the order of the array, as noted in {at}.
uint256 toDeleteIndex = valueIndex - 1;
uint256 lastIndex = set._values.length - 1;
// When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs
// so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.
bytes32 lastvalue = set._values[lastIndex];
// Move the last value to the index where the value to delete is
set._values[toDeleteIndex] = lastvalue;
// Update the index for the moved value
set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based
// Delete the slot where the moved value was stored
set._values.pop();
// Delete the index for the deleted slot
delete set._indexes[value];
return true;
} else {
return false;
}
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function _contains(Set storage set, bytes32 value) private view returns (bool) {
return set._indexes[value] != 0;
}
/**
* @dev Returns the number of values on the set. O(1).
*/
function _length(Set storage set) private view returns (uint256) {
return set._values.length;
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function _at(Set storage set, uint256 index) private view returns (bytes32) {
require(set._values.length > index, "EnumerableSet: index out of bounds");
return set._values[index];
}
// AddressSet
struct AddressSet {
Set _inner;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function add(AddressSet storage set, address value) internal returns (bool) {
return _add(set._inner, bytes32(uint256(value)));
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function remove(AddressSet storage set, address value) internal returns (bool) {
return _remove(set._inner, bytes32(uint256(value)));
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function contains(AddressSet storage set, address value) internal view returns (bool) {
return _contains(set._inner, bytes32(uint256(value)));
}
/**
* @dev Returns the number of values in the set. O(1).
*/
function length(AddressSet storage set) internal view returns (uint256) {
return _length(set._inner);
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function at(AddressSet storage set, uint256 index) internal view returns (address) {
return address(uint256(_at(set._inner, index)));
}
// UintSet
struct UintSet {
Set _inner;
}
/**
* @dev Add a value to a set. O(1).
*
* Returns true if the value was added to the set, that is if it was not
* already present.
*/
function add(UintSet storage set, uint256 value) internal returns (bool) {
return _add(set._inner, bytes32(value));
}
/**
* @dev Removes a value from a set. O(1).
*
* Returns true if the value was removed from the set, that is if it was
* present.
*/
function remove(UintSet storage set, uint256 value) internal returns (bool) {
return _remove(set._inner, bytes32(value));
}
/**
* @dev Returns true if the value is in the set. O(1).
*/
function contains(UintSet storage set, uint256 value) internal view returns (bool) {
return _contains(set._inner, bytes32(value));
}
/**
* @dev Returns the number of values on the set. O(1).
*/
function length(UintSet storage set) internal view returns (uint256) {
return _length(set._inner);
}
/**
* @dev Returns the value stored at position `index` in the set. O(1).
*
* Note that there are no guarantees on the ordering of values inside the
* array, and it may change when more values are added or removed.
*
* Requirements:
*
* - `index` must be strictly less than {length}.
*/
function at(UintSet storage set, uint256 index) internal view returns (uint256) {
return uint256(_at(set._inner, index));
}
}
/**
* @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 admin;
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 {
admin = msg.sender;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(msg.sender == admin);
_;
}
/**
* @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) onlyOwner public {
require(newOwner != address(0));
emit OwnershipTransferred(admin, newOwner);
admin = newOwner;
}
}
interface Token {
function transferFrom(address, address, uint) external returns (bool);
function transfer(address, uint) external returns (bool);
}
contract MinionStaking is Ownable {
using SafeMath for uint;
using EnumerableSet for EnumerableSet.AddressSet;
event RewardsTransferred(address holder, uint amount);
// yfilend token contract address
address public tokenAddress;
// reward rate % per year
uint public rewardRate = 10000;
uint public rewardInterval = 365 days;
// staking fee percent
uint public stakingFeeRate = 0;
// unstaking fee percent
uint public unstakingFeeRate = 0;
// unstaking possible Time
uint public PossibleUnstakeTime = 48 hours;
uint public totalClaimedRewards = 0;
uint private FundedTokens;
bool public stakingStatus = false;
EnumerableSet.AddressSet private holders;
mapping (address => uint) public depositedTokens;
mapping (address => uint) public stakingTime;
mapping (address => uint) public lastClaimedTime;
mapping (address => uint) public totalEarnedTokens;
/*=============================ADMINISTRATIVE FUNCTIONS ==================================*/
function setTokenAddresses(address _tokenAddr) public onlyOwner returns(bool){
require(_tokenAddr != address(0), "Invalid address format is not supported");
tokenAddress = _tokenAddr;
}
function stakingFeeRateSet(uint _stakingFeeRate, uint _unstakingFeeRate) public onlyOwner returns(bool){
stakingFeeRate = _stakingFeeRate;
unstakingFeeRate = _unstakingFeeRate;
}
function rewardRateSet(uint _rewardRate) public onlyOwner returns(bool){
rewardRate = _rewardRate;
}
function StakingReturnsAmountSet(uint _poolreward) public onlyOwner returns(bool){
FundedTokens = _poolreward;
}
function possibleUnstakeTimeSet(uint _possibleUnstakeTime) public onlyOwner returns(bool){
PossibleUnstakeTime = _possibleUnstakeTime;
}
function rewardIntervalSet(uint _rewardInterval) public onlyOwner returns(bool){
rewardInterval = _rewardInterval;
}
function allowStaking(bool _status) public onlyOwner returns(bool){
require(tokenAddress != address(0), "Interracting token address is not yet configured");
stakingStatus = _status;
}
function transferAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
if (_tokenAddr == tokenAddress) {
if (_amount > getFundedTokens()) {
revert();
}
totalClaimedRewards = totalClaimedRewards.add(_amount);
}
Token(_tokenAddr).transfer(_to, _amount);
}
function updateAccount(address account) private {
uint unclaimedDivs = getUnclaimedDivs(account);
if (unclaimedDivs > 0) {
require(Token(tokenAddress).transfer(account, unclaimedDivs), "Could not transfer tokens.");
totalEarnedTokens[account] = totalEarnedTokens[account].add(unclaimedDivs);
totalClaimedRewards = totalClaimedRewards.add(unclaimedDivs);
emit RewardsTransferred(account, unclaimedDivs);
}
lastClaimedTime[account] = now;
}
function getUnclaimedDivs(address _holder) public view returns (uint) {
if (!holders.contains(_holder)) return 0;
if (depositedTokens[_holder] == 0) return 0;
uint timeDiff = now.sub(lastClaimedTime[_holder]);
uint stakedAmount = depositedTokens[_holder];
uint unclaimedDivs = stakedAmount
.mul(rewardRate)
.mul(timeDiff)
.div(rewardInterval)
.div(1e4);
return unclaimedDivs;
}
function getNumberOfHolders() public view returns (uint) {
return holders.length();
}
function farm(uint amountToStake) public {
require(stakingStatus == true, "Staking is not yet initialized");
require(amountToStake > 0, "Cannot deposit 0 Tokens");
require(Token(tokenAddress).transferFrom(msg.sender, address(this), amountToStake), "Insufficient Token Allowance");
updateAccount(msg.sender);
uint fee = amountToStake.mul(stakingFeeRate).div(1e4);
uint amountAfterFee = amountToStake.sub(fee);
require(Token(tokenAddress).transfer(admin, fee), "Could not transfer deposit fee.");
depositedTokens[msg.sender] = depositedTokens[msg.sender].add(amountAfterFee);
if (!holders.contains(msg.sender)) {
holders.add(msg.sender);
stakingTime[msg.sender] = now;
}
}
function unfarm(uint amountToWithdraw) public {
require(depositedTokens[msg.sender] >= amountToWithdraw, "Invalid amount to withdraw");
require(now.sub(stakingTime[msg.sender]) > PossibleUnstakeTime, "Unstake After 48 Hours From Stake");
updateAccount(msg.sender);
uint fee = amountToWithdraw.mul(unstakingFeeRate).div(1e4);
uint amountAfterFee = amountToWithdraw.sub(fee);
require(Token(tokenAddress).transfer(admin, fee), "Could not transfer withdraw fee.");
require(Token(tokenAddress).transfer(msg.sender, amountAfterFee), "Could not transfer tokens.");
depositedTokens[msg.sender] = depositedTokens[msg.sender].sub(amountToWithdraw);
if (holders.contains(msg.sender) && depositedTokens[msg.sender] == 0) {
holders.remove(msg.sender);
}
}
function harvest() public {
updateAccount(msg.sender);
}
function getFundedTokens() public view returns (uint) {
if (totalClaimedRewards >= FundedTokens) {
return 0;
}
uint remaining = FundedTokens.sub(totalClaimedRewards);
return remaining;
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"holder","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsTransferred","type":"event"},{"inputs":[],"name":"PossibleUnstakeTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_poolreward","type":"uint256"}],"name":"StakingReturnsAmountSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"allowStaking","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToStake","type":"uint256"}],"name":"farm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getFundedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"getUnclaimedDivs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lastClaimedTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_possibleUnstakeTime","type":"uint256"}],"name":"possibleUnstakeTimeSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardInterval","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardInterval","type":"uint256"}],"name":"rewardIntervalSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rewardRate","type":"uint256"}],"name":"rewardRateSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"}],"name":"setTokenAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakingFeeRate","type":"uint256"},{"internalType":"uint256","name":"_unstakingFeeRate","type":"uint256"}],"name":"stakingFeeRateSet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingStatus","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakingTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalClaimedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalEarnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountToWithdraw","type":"uint256"}],"name":"unfarm","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unstakingFeeRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]Contract Creation Code
60806040526127106002556301e13380600355600060045560006005556202a30060065560006007556000600960006101000a81548160ff02191690831515021790555034801561004f57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061225a8061009f6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c80636654ffdf116100f9578063d578ceab11610097578063f2fde38b11610071578063f2fde38b146106f9578063f3073ee71461073d578063f3f91fa014610783578063f851a440146107db576101c4565b8063d578ceab1461069f578063d816c7d5146106bd578063f1587ea1146106db576101c4565b80639d76ea58116100d35780639d76ea58146105b1578063bec4de3f146105e5578063c0a6d78b14610603578063c326bf4f14610647576101c4565b80636654ffdf146105075780636a395ccb146105255780637b0a47ee14610593576101c4565b8063455ab53c11610166578063538a85a111610140578063538a85a11461040b578063583d42fd146104395780635ef057be146104915780636270cd18146104af576101c4565b8063455ab53c1461039d5780634641257d146103bd5780634908e386146103c7576101c4565b80631e94723f116101a25780631e94723f14610295578063308feec3146102ed57806337c5785a1461030b5780633844317714610359576101c4565b8063069ca4d0146101c95780630d2adb901461020d5780631c885bae14610267575b600080fd5b6101f5600480360360208110156101df57600080fd5b810190808035906020019092919050505061080f565b60405180821515815260200191505060405180910390f35b61024f6004803603602081101561022357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610876565b60405180821515815260200191505060405180910390f35b6102936004803603602081101561027d57600080fd5b810190808035906020019092919050505061099d565b005b6102d7600480360360208110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efe565b6040518082815260200191505060405180910390f35b6102f561106b565b6040518082815260200191505060405180910390f35b6103416004803603604081101561032157600080fd5b81019080803590602001909291908035906020019092919050505061107c565b60405180821515815260200191505060405180910390f35b6103856004803603602081101561036f57600080fd5b81019080803590602001909291905050506110eb565b60405180821515815260200191505060405180910390f35b6103a5611152565b60405180821515815260200191505060405180910390f35b6103c5611165565b005b6103f3600480360360208110156103dd57600080fd5b8101908080359060200190929190505050611170565b60405180821515815260200191505060405180910390f35b6104376004803603602081101561042157600080fd5b81019080803590602001909291905050506111d7565b005b61047b6004803603602081101561044f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ed565b6040518082815260200191505060405180910390f35b610499611705565b6040518082815260200191505060405180910390f35b6104f1600480360360208110156104c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170b565b6040518082815260200191505060405180910390f35b61050f611723565b6040518082815260200191505060405180910390f35b6105916004803603606081101561053b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611729565b005b61059b6118b9565b6040518082815260200191505060405180910390f35b6105b96118bf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105ed6118e5565b6040518082815260200191505060405180910390f35b61062f6004803603602081101561061957600080fd5b81019080803590602001909291905050506118eb565b60405180821515815260200191505060405180910390f35b6106896004803603602081101561065d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611952565b6040518082815260200191505060405180910390f35b6106a761196a565b6040518082815260200191505060405180910390f35b6106c5611970565b6040518082815260200191505060405180910390f35b6106e3611976565b6040518082815260200191505060405180910390f35b61073b6004803603602081101561070f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119af565b005b61076b6004803603602081101561075357600080fd5b81019080803515159060200190929190505050611afe565b60405180821515815260200191505060405180910390f35b6107c56004803603602081101561079957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c20565b6040518082815260200191505060405180910390f35b6107e3611c38565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086a57600080fd5b81600381905550919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108d157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806121ad6027913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b600654610aa7600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611c5c90919063ffffffff16565b11610afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122046021913960400191505060405180910390fd5b610b0633611c73565b6000610b31612710610b2360055485611f1790919063ffffffff16565b611f4690919063ffffffff16565b90506000610b488284611c5c90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bfd57600080fd5b505af1158015610c11573d6000803e3d6000fd5b505050506040513d6020811015610c2757600080fd5b8101908080519060200190929190505050610caa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b505050506040513d6020811015610d6757600080fd5b8101908080519060200190929190505050610dea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b610e3c83600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5c90919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e9333600a611f5f90919063ffffffff16565b8015610ede57506000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15610ef957610ef733600a611f8f90919063ffffffff16565b505b505050565b6000610f1482600a611f5f90919063ffffffff16565b610f215760009050611066565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610f725760009050611066565b6000610fc6600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611c5c90919063ffffffff16565b90506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061105d61271061104f6003546110418761103360025489611f1790919063ffffffff16565b611f1790919063ffffffff16565b611f4690919063ffffffff16565b611f4690919063ffffffff16565b90508093505050505b919050565b6000611077600a611fbf565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d757600080fd5b826004819055508160058190555092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461114657600080fd5b81600881905550919050565b600960009054906101000a900460ff1681565b61116e33611c73565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111cb57600080fd5b81600281905550919050565b60011515600960009054906101000a900460ff16151514611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5374616b696e67206973206e6f742079657420696e697469616c697a6564000081525060200191505060405180910390fd5b600081116112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561138757600080fd5b505af115801561139b573d6000803e3d6000fd5b505050506040513d60208110156113b157600080fd5b8101908080519060200190929190505050611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b61143d33611c73565b600061146861271061145a60045485611f1790919063ffffffff16565b611f4690919063ffffffff16565b9050600061147f8284611c5c90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561153457600080fd5b505af1158015611548573d6000803e3d6000fd5b505050506040513d602081101561155e57600080fd5b81019080805190602001909291905050506115e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b61163381600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd490919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061168a33600a611f5f90919063ffffffff16565b6116e8576116a233600a611ff090919063ffffffff16565b5042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600d6020528060005260406000206000915090505481565b60045481565b600f6020528060005260406000206000915090505481565b60065481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611807576117df611976565b8111156117eb57600080fd5b61180081600754611fd490919063ffffffff16565b6007819055505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561187857600080fd5b505af115801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b810190808051906020019092919050505050505050565b60025481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461194657600080fd5b81600681905550919050565b600c6020528060005260406000206000915090505481565b60075481565b60055481565b60006008546007541061198c57600090506119ac565b60006119a5600754600854611c5c90919063ffffffff16565b9050809150505b90565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a0757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b5957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121d46030913960400191505060405180910390fd5b81600960006101000a81548160ff021916908315150217905550919050565b600e6020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115611c6857fe5b818303905092915050565b6000611c7e82610efe565b90506000811115611ecf57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b505050506040513d6020811015611d4657600080fd5b8101908080519060200190929190505050611dc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b611e1b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd490919063ffffffff16565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e7381600754611fd490919063ffffffff16565b6007819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008082840290506000841480611f36575082848281611f3357fe5b04145b611f3c57fe5b8091505092915050565b600080828481611f5257fe5b0490508091505092915050565b6000611f87836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612020565b905092915050565b6000611fb7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612043565b905092915050565b6000611fcd8260000161212b565b9050919050565b600080828401905083811015611fe657fe5b8091505092915050565b6000612018836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61213c565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461211f576000600182039050600060018660000180549050039050600086600001828154811061208e57fe5b90600052602060002001549050808760000184815481106120ab57fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806120e357fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612125565b60009150505b92915050565b600081600001805490509050919050565b60006121488383612020565b6121a15782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506121a6565b600090505b9291505056fe496e76616c6964206164647265737320666f726d6174206973206e6f7420737570706f72746564496e74657272616374696e6720746f6b656e2061646472657373206973206e6f742079657420636f6e66696775726564556e7374616b6520416674657220343820486f7572732046726f6d205374616b65a2646970667358221220844b733355672ecf84f87d5a7a2c4b83f81a5f361418587f9275a2d445b855ab64736f6c634300060c0033
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101c45760003560e01c80636654ffdf116100f9578063d578ceab11610097578063f2fde38b11610071578063f2fde38b146106f9578063f3073ee71461073d578063f3f91fa014610783578063f851a440146107db576101c4565b8063d578ceab1461069f578063d816c7d5146106bd578063f1587ea1146106db576101c4565b80639d76ea58116100d35780639d76ea58146105b1578063bec4de3f146105e5578063c0a6d78b14610603578063c326bf4f14610647576101c4565b80636654ffdf146105075780636a395ccb146105255780637b0a47ee14610593576101c4565b8063455ab53c11610166578063538a85a111610140578063538a85a11461040b578063583d42fd146104395780635ef057be146104915780636270cd18146104af576101c4565b8063455ab53c1461039d5780634641257d146103bd5780634908e386146103c7576101c4565b80631e94723f116101a25780631e94723f14610295578063308feec3146102ed57806337c5785a1461030b5780633844317714610359576101c4565b8063069ca4d0146101c95780630d2adb901461020d5780631c885bae14610267575b600080fd5b6101f5600480360360208110156101df57600080fd5b810190808035906020019092919050505061080f565b60405180821515815260200191505060405180910390f35b61024f6004803603602081101561022357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610876565b60405180821515815260200191505060405180910390f35b6102936004803603602081101561027d57600080fd5b810190808035906020019092919050505061099d565b005b6102d7600480360360208110156102ab57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610efe565b6040518082815260200191505060405180910390f35b6102f561106b565b6040518082815260200191505060405180910390f35b6103416004803603604081101561032157600080fd5b81019080803590602001909291908035906020019092919050505061107c565b60405180821515815260200191505060405180910390f35b6103856004803603602081101561036f57600080fd5b81019080803590602001909291905050506110eb565b60405180821515815260200191505060405180910390f35b6103a5611152565b60405180821515815260200191505060405180910390f35b6103c5611165565b005b6103f3600480360360208110156103dd57600080fd5b8101908080359060200190929190505050611170565b60405180821515815260200191505060405180910390f35b6104376004803603602081101561042157600080fd5b81019080803590602001909291905050506111d7565b005b61047b6004803603602081101561044f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ed565b6040518082815260200191505060405180910390f35b610499611705565b6040518082815260200191505060405180910390f35b6104f1600480360360208110156104c557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170b565b6040518082815260200191505060405180910390f35b61050f611723565b6040518082815260200191505060405180910390f35b6105916004803603606081101561053b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611729565b005b61059b6118b9565b6040518082815260200191505060405180910390f35b6105b96118bf565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6105ed6118e5565b6040518082815260200191505060405180910390f35b61062f6004803603602081101561061957600080fd5b81019080803590602001909291905050506118eb565b60405180821515815260200191505060405180910390f35b6106896004803603602081101561065d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611952565b6040518082815260200191505060405180910390f35b6106a761196a565b6040518082815260200191505060405180910390f35b6106c5611970565b6040518082815260200191505060405180910390f35b6106e3611976565b6040518082815260200191505060405180910390f35b61073b6004803603602081101561070f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119af565b005b61076b6004803603602081101561075357600080fd5b81019080803515159060200190929190505050611afe565b60405180821515815260200191505060405180910390f35b6107c56004803603602081101561079957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c20565b6040518082815260200191505060405180910390f35b6107e3611c38565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461086a57600080fd5b81600381905550919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108d157600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610957576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806121ad6027913960400191505060405180910390fd5b81600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550919050565b80600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610a52576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f496e76616c696420616d6f756e7420746f20776974686472617700000000000081525060200191505060405180910390fd5b600654610aa7600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611c5c90919063ffffffff16565b11610afd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806122046021913960400191505060405180910390fd5b610b0633611c73565b6000610b31612710610b2360055485611f1790919063ffffffff16565b611f4690919063ffffffff16565b90506000610b488284611c5c90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bfd57600080fd5b505af1158015610c11573d6000803e3d6000fd5b505050506040513d6020811015610c2757600080fd5b8101908080519060200190929190505050610caa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74207472616e73666572207769746864726177206665652e81525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610d3d57600080fd5b505af1158015610d51573d6000803e3d6000fd5b505050506040513d6020811015610d6757600080fd5b8101908080519060200190929190505050610dea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b610e3c83600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c5c90919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610e9333600a611f5f90919063ffffffff16565b8015610ede57506000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15610ef957610ef733600a611f8f90919063ffffffff16565b505b505050565b6000610f1482600a611f5f90919063ffffffff16565b610f215760009050611066565b6000600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541415610f725760009050611066565b6000610fc6600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611c5c90919063ffffffff16565b90506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600061105d61271061104f6003546110418761103360025489611f1790919063ffffffff16565b611f1790919063ffffffff16565b611f4690919063ffffffff16565b611f4690919063ffffffff16565b90508093505050505b919050565b6000611077600a611fbf565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d757600080fd5b826004819055508160058190555092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461114657600080fd5b81600881905550919050565b600960009054906101000a900460ff1681565b61116e33611c73565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146111cb57600080fd5b81600281905550919050565b60011515600960009054906101000a900460ff16151514611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f5374616b696e67206973206e6f742079657420696e697469616c697a6564000081525060200191505060405180910390fd5b600081116112d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f43616e6e6f74206465706f736974203020546f6b656e7300000000000000000081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561138757600080fd5b505af115801561139b573d6000803e3d6000fd5b505050506040513d60208110156113b157600080fd5b8101908080519060200190929190505050611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f496e73756666696369656e7420546f6b656e20416c6c6f77616e63650000000081525060200191505060405180910390fd5b61143d33611c73565b600061146861271061145a60045485611f1790919063ffffffff16565b611f4690919063ffffffff16565b9050600061147f8284611c5c90919063ffffffff16565b9050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561153457600080fd5b505af1158015611548573d6000803e3d6000fd5b505050506040513d602081101561155e57600080fd5b81019080805190602001909291905050506115e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74207472616e73666572206465706f736974206665652e0081525060200191505060405180910390fd5b61163381600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd490919063ffffffff16565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061168a33600a611f5f90919063ffffffff16565b6116e8576116a233600a611ff090919063ffffffff16565b5042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050565b600d6020528060005260406000206000915090505481565b60045481565b600f6020528060005260406000206000915090505481565b60065481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461178157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611807576117df611976565b8111156117eb57600080fd5b61180081600754611fd490919063ffffffff16565b6007819055505b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561187857600080fd5b505af115801561188c573d6000803e3d6000fd5b505050506040513d60208110156118a257600080fd5b810190808051906020019092919050505050505050565b60025481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461194657600080fd5b81600681905550919050565b600c6020528060005260406000206000915090505481565b60075481565b60055481565b60006008546007541061198c57600090506119ac565b60006119a5600754600854611c5c90919063ffffffff16565b9050809150505b90565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a0757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a4157600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b5957600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611c01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001806121d46030913960400191505060405180910390fd5b81600960006101000a81548160ff021916908315150217905550919050565b600e6020528060005260406000206000915090505481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082821115611c6857fe5b818303905092915050565b6000611c7e82610efe565b90506000811115611ecf57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611d1c57600080fd5b505af1158015611d30573d6000803e3d6000fd5b505050506040513d6020811015611d4657600080fd5b8101908080519060200190929190505050611dc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f74207472616e7366657220746f6b656e732e00000000000081525060200191505060405180910390fd5b611e1b81600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611fd490919063ffffffff16565b600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e7381600754611fd490919063ffffffff16565b6007819055507f586b2e63a21a7a4e1402e36f48ce10cb1ec94684fea254c186b76d1f98ecf1308282604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a15b42600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b60008082840290506000841480611f36575082848281611f3357fe5b04145b611f3c57fe5b8091505092915050565b600080828481611f5257fe5b0490508091505092915050565b6000611f87836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612020565b905092915050565b6000611fb7836000018373ffffffffffffffffffffffffffffffffffffffff1660001b612043565b905092915050565b6000611fcd8260000161212b565b9050919050565b600080828401905083811015611fe657fe5b8091505092915050565b6000612018836000018373ffffffffffffffffffffffffffffffffffffffff1660001b61213c565b905092915050565b600080836001016000848152602001908152602001600020541415905092915050565b6000808360010160008481526020019081526020016000205490506000811461211f576000600182039050600060018660000180549050039050600086600001828154811061208e57fe5b90600052602060002001549050808760000184815481106120ab57fe5b90600052602060002001819055506001830187600101600083815260200190815260200160002081905550866000018054806120e357fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050612125565b60009150505b92915050565b600081600001805490509050919050565b60006121488383612020565b6121a15782600001829080600181540180825580915050600190039060005260206000200160009091909190915055826000018054905083600101600084815260200190815260200160002081905550600190506121a6565b600090505b9291505056fe496e76616c6964206164647265737320666f726d6174206973206e6f7420737570706f72746564496e74657272616374696e6720746f6b656e2061646472657373206973206e6f742079657420636f6e66696775726564556e7374616b6520416674657220343820486f7572732046726f6d205374616b65a2646970667358221220844b733355672ecf84f87d5a7a2c4b83f81a5f361418587f9275a2d445b855ab64736f6c634300060c0033
Deployed Bytecode Sourcemap
10031:6165:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12061:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11164:218;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14928:920;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13364:598;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13974:99;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11394:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11742:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10745:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;15860:70;;;:::i;:::-;;11610:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14085:831;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10899:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10454:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11005:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10604:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12435:368;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10339:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10268:27;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10376:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11884:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10844:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10659:35;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10527:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15942:240;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9681:178;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12217:206;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10950:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;9062:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12061:144;12135:4;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;12175:15:::1;12158:14;:32;;;;12061:144:::0;;;:::o;11164:218::-;11236:4;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;11279:1:::1;11257:24;;:10;:24;;;;11249:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11348:10;11333:12;;:25;;;;;;;;;;;;;;;;;;11164:218:::0;;;:::o;14928:920::-;15034:16;15003:15;:27;15019:10;15003:27;;;;;;;;;;;;;;;;:47;;14995:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15145:19;;15110:32;15118:11;:23;15130:10;15118:23;;;;;;;;;;;;;;;;15110:3;:7;;:32;;;;:::i;:::-;:54;15102:100;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15223:25;15237:10;15223:13;:25::i;:::-;15269:8;15280:47;15323:3;15280:38;15301:16;;15280;:20;;:38;;;;:::i;:::-;:42;;:47;;;;:::i;:::-;15269:58;;15338:19;15360:25;15381:3;15360:16;:20;;:25;;;;:::i;:::-;15338:47;;15420:12;;;;;;;;;;;15414:28;;;15443:5;;;;;;;;;;15450:3;15414:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15406:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15516:12;;;;;;;;;;;15510:28;;;15539:10;15551:14;15510:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15502:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15648:49;15680:16;15648:15;:27;15664:10;15648:27;;;;;;;;;;;;;;;;:31;;:49;;;;:::i;:::-;15618:15;:27;15634:10;15618:27;;;;;;;;;;;;;;;:79;;;;15722:28;15739:10;15722:7;:16;;:28;;;;:::i;:::-;:64;;;;;15785:1;15754:15;:27;15770:10;15754:27;;;;;;;;;;;;;;;;:32;15722:64;15718:123;;;15803:26;15818:10;15803:7;:14;;:26;;;;:::i;:::-;;15718:123;14928:920;;;:::o;13364:598::-;13428:4;13460:25;13477:7;13460;:16;;:25;;;;:::i;:::-;13455:40;;13494:1;13487:8;;;;13455:40;13538:1;13510:15;:24;13526:7;13510:24;;;;;;;;;;;;;;;;:29;13506:43;;;13548:1;13541:8;;;;13506:43;13562:13;13578:33;13586:15;:24;13602:7;13586:24;;;;;;;;;;;;;;;;13578:3;:7;;:33;;;;:::i;:::-;13562:49;;13632:17;13652:15;:24;13668:7;13652:24;;;;;;;;;;;;;;;;13632:44;;13697:18;13718:191;13905:3;13718:152;13855:14;;13718:102;13811:8;13718:58;13765:10;;13718:12;:46;;:58;;;;:::i;:::-;:92;;:102;;;;:::i;:::-;:136;;:152;;;;:::i;:::-;:186;;:191;;;;:::i;:::-;13697:212;;13941:13;13934:20;;;;;13364:598;;;;:::o;13974:99::-;14025:4;14049:16;:7;:14;:16::i;:::-;14042:23;;13974:99;:::o;11394:202::-;11492:4;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;11522:15:::1;11505:14;:32;;;;11564:17;11545:16;:36;;;;11394:202:::0;;;;:::o;11742:130::-;11818:4;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;11846:11:::1;11831:12;:26;;;;11742:130:::0;;;:::o;10745:33::-;;;;;;;;;;;;;:::o;15860:70::-;15897:25;15911:10;15897:13;:25::i;:::-;15860:70::o;11610:118::-;11676:4;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;11702:11:::1;11689:10;:24;;;;11610:118:::0;;;:::o;14085:831::-;14162:4;14145:21;;:13;;;;;;;;;;;:21;;;14137:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14236:1;14220:13;:17;14212:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14290:12;;;;;;;;;;;14284:32;;;14317:10;14337:4;14344:13;14284:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14276:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14412:25;14426:10;14412:13;:25::i;:::-;14458:8;14469:42;14507:3;14469:33;14487:14;;14469:13;:17;;:33;;;;:::i;:::-;:37;;:42;;;;:::i;:::-;14458:53;;14522:19;14544:22;14562:3;14544:13;:17;;:22;;;;:::i;:::-;14522:44;;14591:12;;;;;;;;;;;14585:28;;;14614:5;;;;;;;;;;14621:3;14585:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14577:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14712:47;14744:14;14712:15;:27;14728:10;14712:27;;;;;;;;;;;;;;;;:31;;:47;;;;:::i;:::-;14682:15;:27;14698:10;14682:27;;;;;;;;;;;;;;;:77;;;;14785:28;14802:10;14785:7;:16;;:28;;;;:::i;:::-;14780:129;;14830:23;14842:10;14830:7;:11;;:23;;;;:::i;:::-;;14894:3;14868:11;:23;14880:10;14868:23;;;;;;;;;;;;;;;:29;;;;14780:129;14085:831;;;:::o;10899:44::-;;;;;;;;;;;;;;;;;:::o;10454:30::-;;;;:::o;11005:50::-;;;;;;;;;;;;;;;;;:::o;10604:42::-;;;;:::o;12435:368::-;9492:5;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;12560:12:::1;;;;;;;;;;;12546:26;;:10;:26;;;12542:203;;;12603:17;:15;:17::i;:::-;12593:7;:27;12589:76;;;12641:8;::::0;::::1;12589:76;12701:32;12725:7;12701:19;;:23;;:32;;;;:::i;:::-;12679:19;:54;;;;12542:203;12761:10;12755:26;;;12782:3;12787:7;12755:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;12435:368:::0;;;:::o;10339:30::-;;;;:::o;10268:27::-;;;;;;;;;;;;;:::o;10376:37::-;;;;:::o;11884:164::-;11968:4;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;12013:20:::1;11991:19;:42;;;;11884:164:::0;;;:::o;10844:48::-;;;;;;;;;;;;;;;;;:::o;10659:35::-;;;;:::o;10527:32::-;;;;:::o;15942:240::-;15990:4;16034:12;;16011:19;;:35;16007:76;;16070:1;16063:8;;;;16007:76;16093:14;16110:37;16127:19;;16110:12;;:16;;:37;;;;:::i;:::-;16093:54;;16165:9;16158:16;;;15942:240;;:::o;9681:178::-;9492:5;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;9778:1:::1;9758:22;;:8;:22;;;;9750:31;;;::::0;::::1;;9821:8;9793:37;;9814:5;::::0;::::1;;;;;;;;9793:37;;;;;;;;;;;;9845:8;9837:5;::::0;:16:::1;;;;;;;;;;;;;;;;;;9681:178:::0;:::o;12217:206::-;12278:4;9492:5;;;;;;;;;;;9478:19;;:10;:19;;;9470:28;;;;;;12326:1:::1;12302:26;;:12;;;;;;;;;;;:26;;;;12294:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12408:7;12392:13;;:23;;;;;;;;;;;;;;;;;;12217:206:::0;;;:::o;10950:48::-;;;;;;;;;;;;;;;;;:::o;9062:20::-;;;;;;;;;;;;:::o;616:113::-;674:7;702:1;697;:6;;690:14;;;;722:1;718;:5;711:12;;616:113;;;;:::o;12821:531::-;12880:18;12901:25;12918:7;12901:16;:25::i;:::-;12880:46;;12957:1;12941:13;:17;12937:367;;;12989:12;;;;;;;;;;;12983:28;;;13012:7;13021:13;12983:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12975:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13110:45;13141:13;13110:17;:26;13128:7;13110:26;;;;;;;;;;;;;;;;:30;;:45;;;;:::i;:::-;13081:17;:26;13099:7;13081:26;;;;;;;;;;;;;;;:74;;;;13192:38;13216:13;13192:19;;:23;;:38;;;;:::i;:::-;13170:19;:60;;;;13250:42;13269:7;13278:13;13250:42;;;;;;;;;;;;;;;;;;;;;;;;;;12937:367;13341:3;13314:15;:24;13330:7;13314:24;;;;;;;;;;;;;;;:30;;;;12821:531;;:::o;187:147::-;245:7;261:9;277:1;273;:5;261:17;;297:1;292;:6;:20;;;;311:1;306;302;:5;;;;;;:10;292:20;285:28;;;;327:1;320:8;;;187:147;;;;:::o;340:270::-;398:7;489:9;505:1;501;:5;;;;;;489:17;;603:1;596:8;;;340:270;;;;:::o;6377:158::-;6457:4;6481:46;6491:3;:10;;6519:5;6511:14;;6503:23;;6481:9;:46::i;:::-;6474:53;;6377:158;;;;:::o;6142:149::-;6215:4;6239:44;6247:3;:10;;6275:5;6267:14;;6259:23;;6239:7;:44::i;:::-;6232:51;;6142:149;;;;:::o;6621:117::-;6684:7;6711:19;6719:3;:10;;6711:7;:19::i;:::-;6704:26;;6621:117;;;:::o;735:133::-;793:7;809:9;825:1;821;:5;809:17;;845:1;840;:6;;833:14;;;;861:1;854:8;;;735:133;;;;:::o;5823:143::-;5893:4;5917:41;5922:3;:10;;5950:5;5942:14;;5934:23;;5917:4;:41::i;:::-;5910:48;;5823:143;;;;:::o;4697:129::-;4770:4;4817:1;4794:3;:12;;:19;4807:5;4794:19;;;;;;;;;;;;:24;;4787:31;;4697:129;;;;:::o;3067:1544::-;3133:4;3251:18;3272:3;:12;;:19;3285:5;3272:19;;;;;;;;;;;;3251:40;;3322:1;3308:10;:15;3304:1300;;3670:21;3707:1;3694:10;:14;3670:38;;3723:17;3764:1;3743:3;:11;;:18;;;;:22;3723:42;;4010:17;4030:3;:11;;4042:9;4030:22;;;;;;;;;;;;;;;;4010:42;;4176:9;4147:3;:11;;4159:13;4147:26;;;;;;;;;;;;;;;:38;;;;4295:1;4279:13;:17;4253:3;:12;;:23;4266:9;4253:23;;;;;;;;;;;:43;;;;4405:3;:11;;:17;;;;;;;;;;;;;;;;;;;;;;;;4500:3;:12;;:19;4513:5;4500:19;;;;;;;;;;;4493:26;;;4543:4;4536:11;;;;;;;;3304:1300;4587:5;4580:12;;;3067:1544;;;;;:::o;4912:109::-;4968:7;4995:3;:11;;:18;;;;4988:25;;4912:109;;;:::o;2477:414::-;2540:4;2562:21;2572:3;2577:5;2562:9;:21::i;:::-;2557:327;;2600:3;:11;;2617:5;2600:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2783:3;:11;;:18;;;;2761:3;:12;;:19;2774:5;2761:19;;;;;;;;;;;:40;;;;2823:4;2816:11;;;;2557:327;2867:5;2860:12;;2477:414;;;;;:::o
Swarm Source
ipfs://844b733355672ecf84f87d5a7a2c4b83f81a5f361418587f9275a2d445b855ab
Loading...
Loading
Loading...
Loading
Net 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.