Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 25 from a total of 241 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Update Policy St... | 18749279 | 814 days ago | IN | 0 ETH | 0.00309711 | ||||
| Update Policy St... | 18748981 | 814 days ago | IN | 0 ETH | 0.00236652 | ||||
| Update Policy St... | 18633846 | 830 days ago | IN | 0 ETH | 0.00196587 | ||||
| Update Policy St... | 18553491 | 841 days ago | IN | 0 ETH | 0.00129945 | ||||
| Update Policy St... | 18520686 | 846 days ago | IN | 0 ETH | 0.00220271 | ||||
| Update Policy St... | 18520390 | 846 days ago | IN | 0 ETH | 0.00292868 | ||||
| Update Policy St... | 18451088 | 855 days ago | IN | 0 ETH | 0.00121109 | ||||
| Update Policy St... | 18420428 | 860 days ago | IN | 0 ETH | 0.00298922 | ||||
| Update Policy St... | 18305782 | 876 days ago | IN | 0 ETH | 0.00062669 | ||||
| Update Policy St... | 18305478 | 876 days ago | IN | 0 ETH | 0.00050789 | ||||
| Update Policy St... | 18286108 | 878 days ago | IN | 0 ETH | 0.00054187 | ||||
| Update Policy St... | 18285815 | 878 days ago | IN | 0 ETH | 0.0017027 | ||||
| Update Policy St... | 18277466 | 880 days ago | IN | 0 ETH | 0.00089693 | ||||
| Update Policy St... | 18249129 | 884 days ago | IN | 0 ETH | 0.00071377 | ||||
| Update Policy St... | 18206265 | 890 days ago | IN | 0 ETH | 0.00067129 | ||||
| Update Policy St... | 18092601 | 906 days ago | IN | 0 ETH | 0.00163687 | ||||
| Update Policy St... | 18092305 | 906 days ago | IN | 0 ETH | 0.00117552 | ||||
| Update Policy St... | 18063724 | 910 days ago | IN | 0 ETH | 0.00226275 | ||||
| Update Policy St... | 18063127 | 910 days ago | IN | 0 ETH | 0.00087396 | ||||
| Update Policy St... | 18028022 | 915 days ago | IN | 0 ETH | 0.00292484 | ||||
| Update Policy St... | 17979808 | 921 days ago | IN | 0 ETH | 0.00238374 | ||||
| Update Policy St... | 17978315 | 922 days ago | IN | 0 ETH | 0.00211036 | ||||
| Update Policy St... | 17976830 | 922 days ago | IN | 0 ETH | 0.00132418 | ||||
| Update Policy St... | 17974455 | 922 days ago | IN | 0 ETH | 0.00120023 | ||||
| Update Policy St... | 17967584 | 923 days ago | IN | 0 ETH | 0.00144143 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
CapitalAgent
Compiler Version
v0.8.0+commit.c7dfd78e
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
import "@openzeppelin/contracts/access/Ownable.sol";
import "./interfaces/ISalesPolicy.sol";
import "./interfaces/IExchangeAgent.sol";
import "./interfaces/ISingleSidedInsurancePool.sol";
import "./interfaces/ICapitalAgent.sol";
contract CapitalAgent is ICapitalAgent, ReentrancyGuard, Ownable {
address public exchangeAgent;
address public salesPolicyFactory;
address public UNO_TOKEN;
address public USDC_TOKEN;
address public operator;
struct PoolInfo {
uint256 totalCapital;
uint256 SCR;
address currency;
bool exist;
}
struct PolicyInfo {
address policy;
uint256 utilizedAmount;
bool exist;
}
mapping(address => PoolInfo) public poolInfo;
uint256 public totalCapitalStaked;
PolicyInfo public policyInfo;
uint256 public totalUtilizedAmount;
uint256 public MCR;
uint256 public MLR;
uint256 public CALC_PRECISION = 1e18;
mapping(address => bool) public poolWhiteList;
event LogAddPool(address indexed _ssip, address _currency, uint256 _scr);
event LogRemovePool(address indexed _ssip);
event LogSetPolicy(address indexed _salesPolicy);
event LogRemovePolicy(address indexed _salesPolicy);
event LogUpdatePoolCapital(address indexed _ssip, uint256 _poolCapital, uint256 _totalCapital);
event LogUpdatePolicyCoverage(
address indexed _policy,
uint256 _amount,
uint256 _policyUtilized,
uint256 _totalUtilizedAmount
);
event LogUpdatePolicyExpired(address indexed _policy, uint256 _policyTokenId);
event LogMarkToClaimPolicy(address indexed _policy, uint256 _policyTokenId);
event LogSetMCR(address indexed _owner, address indexed _capitalAgent, uint256 _MCR);
event LogSetMLR(address indexed _owner, address indexed _capitalAgent, uint256 _MLR);
event LogSetSCR(address indexed _owner, address indexed _capitalAgent, address indexed _pool, uint256 _SCR);
event LogSetExchangeAgent(address indexed _owner, address indexed _capitalAgent, address _exchangeAgent);
event LogSetSalesPolicyFactory(address indexed _factory);
event LogAddPoolWhiteList(address indexed _pool);
event LogRemovePoolWhiteList(address indexed _pool);
event LogSetOperator(address indexed _operator);
constructor(
address _exchangeAgent,
address _UNO_TOKEN,
address _USDC_TOKEN,
address _multiSigWallet,
address _operator
) {
require(_exchangeAgent != address(0), "UnoRe: zero exchangeAgent address");
require(_UNO_TOKEN != address(0), "UnoRe: zero UNO address");
require(_USDC_TOKEN != address(0), "UnoRe: zero USDC address");
require(_multiSigWallet != address(0), "UnoRe: zero multisigwallet address");
exchangeAgent = _exchangeAgent;
UNO_TOKEN = _UNO_TOKEN;
USDC_TOKEN = _USDC_TOKEN;
operator = _operator;
transferOwnership(_multiSigWallet);
}
modifier onlyPoolWhiteList() {
require(poolWhiteList[msg.sender], "UnoRe: Capital Agent Forbidden");
_;
}
modifier onlyOperator() {
require(operator == msg.sender, "UnoRe: Capital Agent Forbidden");
_;
}
function setSalesPolicyFactory(address _factory) external onlyOwner nonReentrant {
require(_factory != address(0), "UnoRe: zero factory address");
salesPolicyFactory = _factory;
emit LogSetSalesPolicyFactory(_factory);
}
function setOperator(address _operator) external onlyOwner nonReentrant {
require(_operator != address(0), "UnoRe: zero operator address");
operator = _operator;
emit LogSetOperator(_operator);
}
function addPoolWhiteList(address _pool) external onlyOwner nonReentrant {
require(_pool != address(0), "UnoRe: zero pool address");
require(!poolWhiteList[_pool], "UnoRe: white list already");
poolWhiteList[_pool] = true;
emit LogAddPoolWhiteList(_pool);
}
function removePoolWhiteList(address _pool) external onlyOwner nonReentrant {
require(_pool != address(0), "UnoRe: zero pool address");
require(poolWhiteList[_pool], "UnoRe: no white list");
poolWhiteList[_pool] = false;
emit LogRemovePoolWhiteList(_pool);
}
function addPool(
address _ssip,
address _currency,
uint256 _scr
) external override onlyPoolWhiteList {
require(_ssip != address(0), "UnoRe: zero address");
require(!poolInfo[_ssip].exist, "UnoRe: already exist pool");
poolInfo[_ssip] = PoolInfo({totalCapital: 0, currency: _currency, SCR: _scr, exist: true});
emit LogAddPool(_ssip, _currency, _scr);
}
function addPoolByAdmin(
address _ssip,
address _currency,
uint256 _scr
) external onlyOwner {
require(_ssip != address(0), "UnoRe: zero address");
require(!poolInfo[_ssip].exist, "UnoRe: already exist pool");
poolInfo[_ssip] = PoolInfo({totalCapital: 0, currency: _currency, SCR: _scr, exist: true});
emit LogAddPool(_ssip, _currency, _scr);
}
function removePool(address _ssip) external onlyOwner nonReentrant {
require(_ssip != address(0), "UnoRe: zero address");
require(poolInfo[_ssip].exist, "UnoRe: no exit pool");
if (poolInfo[_ssip].totalCapital > 0) {
totalCapitalStaked = totalCapitalStaked - poolInfo[_ssip].totalCapital;
}
delete poolInfo[_ssip];
emit LogRemovePool(_ssip);
}
function setPolicy(address _policy) external override nonReentrant {
require(salesPolicyFactory != address(0), "UnoRe: not set factory address yet");
require(salesPolicyFactory == msg.sender, "UnoRe: only salesPolicyFactory can call");
policyInfo = PolicyInfo({policy: _policy, utilizedAmount: 0, exist: true});
emit LogSetPolicy(_policy);
}
function setPolicyByAdmin(address _policy) external onlyOwner nonReentrant {
require(_policy != address(0), "UnoRe: zero address");
policyInfo = PolicyInfo({policy: _policy, utilizedAmount: 0, exist: true});
emit LogSetPolicy(_policy);
}
function removePolicy() external onlyOwner nonReentrant {
require(policyInfo.exist, "UnoRe: no exit pool");
totalUtilizedAmount = 0;
address _policy = policyInfo.policy;
policyInfo.policy = address(0);
policyInfo.exist = false;
policyInfo.utilizedAmount = 0;
emit LogRemovePolicy(_policy);
}
function SSIPWithdraw(uint256 _withdrawAmount) external override nonReentrant {
require(poolInfo[msg.sender].exist, "UnoRe: no exist ssip");
require(_checkCapitalByMCRAndSCR(msg.sender, _withdrawAmount), "UnoRe: minimum capital underflow");
_updatePoolCapital(msg.sender, _withdrawAmount, false);
}
function SSIPPolicyCaim(
uint256 _withdrawAmount,
uint256 _policyId,
bool _isFinished
) external override nonReentrant {
require(poolInfo[msg.sender].exist, "UnoRe: no exist ssip");
_updatePoolCapital(msg.sender, _withdrawAmount, false);
if (_isFinished) {
_markToClaimPolicy(_policyId);
}
}
function SSIPStaking(uint256 _stakingAmount) external override nonReentrant {
require(poolInfo[msg.sender].exist, "UnoRe: no exist ssip");
_updatePoolCapital(msg.sender, _stakingAmount, true);
}
function checkCapitalByMCR(address _pool, uint256 _withdrawAmount) external view override returns (bool) {
return _checkCapitalByMCRAndSCR(_pool, _withdrawAmount);
}
function checkCoverageByMLR(uint256 _coverageAmount) external view override returns (bool) {
return _checkCoverageByMLR(_coverageAmount);
}
function policySale(uint256 _coverageAmount) external override nonReentrant {
require(msg.sender == policyInfo.policy, "UnoRe: only salesPolicy can call");
require(policyInfo.exist, "UnoRe: no exist policy");
require(_checkCoverageByMLR(_coverageAmount), "UnoRe: maximum leverage overflow");
_updatePolicyCoverage(_coverageAmount, true);
}
function updatePolicyStatus(uint256 _policyId) external override nonReentrant {
require(policyInfo.policy != address(0), "UnoRe: no exist salesPolicy");
(uint256 _coverageAmount, uint256 _coverageDuration, uint256 _coverStartAt) = ISalesPolicy(policyInfo.policy)
.getPolicyData(_policyId);
bool isExpired = block.timestamp >= _coverageDuration + _coverStartAt;
if (isExpired) {
_updatePolicyCoverage(_coverageAmount, false);
ISalesPolicy(policyInfo.policy).updatePolicyExpired(_policyId);
emit LogUpdatePolicyExpired(policyInfo.policy, _policyId);
}
}
function markToClaimPolicy(uint256 _policyId) external onlyOwner nonReentrant {
_markToClaimPolicy(_policyId);
}
function _markToClaimPolicy(uint256 _policyId) private {
require(policyInfo.policy != address(0), "UnoRe: no exist salesPolicy");
(uint256 _coverageAmount, , ) = ISalesPolicy(policyInfo.policy).getPolicyData(_policyId);
_updatePolicyCoverage(_coverageAmount, false);
ISalesPolicy(policyInfo.policy).markToClaim(_policyId);
emit LogMarkToClaimPolicy(policyInfo.policy, _policyId);
}
function _updatePoolCapital(
address _pool,
uint256 _amount,
bool isAdd
) private {
address currency = poolInfo[_pool].currency;
uint256 stakingAmountInUSDC;
if (currency == USDC_TOKEN) {
stakingAmountInUSDC = _amount;
} else {
stakingAmountInUSDC = currency != address(0)
? IExchangeAgent(exchangeAgent).getNeededTokenAmount(currency, USDC_TOKEN, _amount)
: IExchangeAgent(exchangeAgent).getTokenAmountForETH(USDC_TOKEN, _amount);
}
if (!isAdd) {
require(poolInfo[_pool].totalCapital >= stakingAmountInUSDC, "UnoRe: pool capital overflow");
}
poolInfo[_pool].totalCapital = isAdd
? poolInfo[_pool].totalCapital + stakingAmountInUSDC
: poolInfo[_pool].totalCapital - stakingAmountInUSDC;
totalCapitalStaked = isAdd ? totalCapitalStaked + stakingAmountInUSDC : totalCapitalStaked - stakingAmountInUSDC;
emit LogUpdatePoolCapital(_pool, poolInfo[_pool].totalCapital, totalCapitalStaked);
}
function _updatePolicyCoverage(uint256 _amount, bool isAdd) private {
if (!isAdd) {
require(policyInfo.utilizedAmount >= _amount, "UnoRe: policy coverage overflow");
}
policyInfo.utilizedAmount = isAdd ? policyInfo.utilizedAmount + _amount : policyInfo.utilizedAmount - _amount;
totalUtilizedAmount = isAdd ? totalUtilizedAmount + _amount : totalUtilizedAmount - _amount;
emit LogUpdatePolicyCoverage(policyInfo.policy, _amount, policyInfo.utilizedAmount, totalUtilizedAmount);
}
function _checkCapitalByMCRAndSCR(address _pool, uint256 _withdrawAmount) private view returns (bool) {
address currency = poolInfo[_pool].currency;
uint256 withdrawAmountInUSDC;
if (currency == USDC_TOKEN) {
withdrawAmountInUSDC = _withdrawAmount;
} else {
withdrawAmountInUSDC = currency != address(0)
? IExchangeAgent(exchangeAgent).getNeededTokenAmount(currency, USDC_TOKEN, _withdrawAmount)
: IExchangeAgent(exchangeAgent).getTokenAmountForETH(USDC_TOKEN, _withdrawAmount);
}
bool isMCRPass = totalCapitalStaked - withdrawAmountInUSDC >= (totalCapitalStaked * MCR) / CALC_PRECISION;
bool isSCRPass = poolInfo[_pool].totalCapital - withdrawAmountInUSDC >= poolInfo[_pool].SCR;
return isMCRPass && isSCRPass;
}
function _checkCoverageByMLR(uint256 _newCoverageAmount) private view returns (bool) {
return totalUtilizedAmount + _newCoverageAmount <= (totalCapitalStaked * MLR) / CALC_PRECISION;
}
function setMCR(uint256 _MCR) external onlyOperator nonReentrant {
require(_MCR > 0, "UnoRe: zero mcr");
MCR = _MCR;
emit LogSetMCR(msg.sender, address(this), _MCR);
}
function setMLR(uint256 _MLR) external onlyOperator nonReentrant {
require(_MLR > 0, "UnoRe: zero mlr");
MLR = _MLR;
emit LogSetMLR(msg.sender, address(this), _MLR);
}
function setSCR(uint256 _SCR, address _pool) external onlyOperator nonReentrant {
require(_SCR > 0, "UnoRe: zero scr");
poolInfo[_pool].SCR = _SCR;
emit LogSetSCR(msg.sender, address(this), _pool, _SCR);
}
function setExchangeAgent(address _exchangeAgent) external onlyOwner nonReentrant {
require(_exchangeAgent != address(0), "UnoRe: zero address");
exchangeAgent = _exchangeAgent;
emit LogSetExchangeAgent(msg.sender, address(this), _exchangeAgent);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "../utils/Context.sol";
/**
* @dev Contract module which provides a basic access control mechanism, where
* there is an account (an owner) that can be granted exclusive access to
* specific functions.
*
* By default, the owner account will be the one that deploys the contract. This
* can later be changed with {transferOwnership}.
*
* This module is used through inheritance. It will make available the modifier
* `onlyOwner`, which can be applied to your functions to restrict their use to
* the owner.
*/
abstract contract Ownable is Context {
address private _owner;
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
/**
* @dev Initializes the contract setting the deployer as the initial owner.
*/
constructor() {
_setOwner(_msgSender());
}
/**
* @dev Returns the address of the current owner.
*/
function owner() public view virtual returns (address) {
return _owner;
}
/**
* @dev Throws if called by any account other than the owner.
*/
modifier onlyOwner() {
require(owner() == _msgSender(), "Ownable: caller is not the owner");
_;
}
/**
* @dev Leaves the contract without owner. It will not be possible to call
* `onlyOwner` functions anymore. Can only be called by the current owner.
*
* NOTE: Renouncing ownership will leave the contract without an owner,
* thereby removing any functionality that is only available to the owner.
*/
function renounceOwnership() public virtual onlyOwner {
_setOwner(address(0));
}
/**
* @dev Transfers ownership of the contract to a new account (`newOwner`).
* Can only be called by the current owner.
*/
function transferOwnership(address newOwner) public virtual onlyOwner {
require(newOwner != address(0), "Ownable: new owner is the zero address");
_setOwner(newOwner);
}
function _setOwner(address newOwner) private {
address oldOwner = _owner;
_owner = newOwner;
emit OwnershipTransferred(oldOwner, newOwner);
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Contract module that helps prevent reentrant calls to a function.
*
* Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
* available, which can be applied to functions to make sure there are no nested
* (reentrant) calls to them.
*
* Note that because there is a single `nonReentrant` guard, functions marked as
* `nonReentrant` may not call one another. This can be worked around by making
* those functions `private`, and then adding `external` `nonReentrant` entry
* points to them.
*
* TIP: If you would like to learn more about reentrancy and alternative ways
* to protect against it, check out our blog post
* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
*/
abstract contract ReentrancyGuard {
// Booleans are more expensive than uint256 or any type that takes up a full
// word because each write operation emits an extra SLOAD to first read the
// slot's contents, replace the bits taken up by the boolean, and then write
// back. This is the compiler's defense against contract upgrades and
// pointer aliasing, and it cannot be disabled.
// The values being non-zero value makes deployment a bit more expensive,
// but in exchange the refund on every call to nonReentrant will be lower in
// amount. Since refunds are capped to a percentage of the total
// transaction's gas, it is best to keep them low in cases like this one, to
// increase the likelihood of the full refund coming into effect.
uint256 private constant _NOT_ENTERED = 1;
uint256 private constant _ENTERED = 2;
uint256 private _status;
constructor() {
_status = _NOT_ENTERED;
}
/**
* @dev Prevents a contract from calling itself, directly or indirectly.
* Calling a `nonReentrant` function from another `nonReentrant`
* function is not supported. It is possible to prevent this from happening
* by making the `nonReentrant` function external, and make it call a
* `private` function that does the actual work.
*/
modifier nonReentrant() {
// On the first call to nonReentrant, _notEntered will be true
require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
// Any calls to nonReentrant after this point will fail
_status = _ENTERED;
_;
// By storing the original value once again, a refund is triggered (see
// https://eips.ethereum.org/EIPS/eip-2200)
_status = _NOT_ENTERED;
}
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Interface of the ERC20 standard as defined in the EIP.
*/
interface IERC20 {
/**
* @dev Returns the amount of tokens in existence.
*/
function totalSupply() external view returns (uint256);
/**
* @dev Returns the amount of tokens owned by `account`.
*/
function balanceOf(address account) external view returns (uint256);
/**
* @dev Moves `amount` tokens from the caller's account to `recipient`.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transfer(address recipient, uint256 amount) external returns (bool);
/**
* @dev Returns the remaining number of tokens that `spender` will be
* allowed to spend on behalf of `owner` through {transferFrom}. This is
* zero by default.
*
* This value changes when {approve} or {transferFrom} are called.
*/
function allowance(address owner, address spender) external view returns (uint256);
/**
* @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* IMPORTANT: 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
*
* Emits an {Approval} event.
*/
function approve(address spender, uint256 amount) external returns (bool);
/**
* @dev Moves `amount` tokens from `sender` to `recipient` using the
* allowance mechanism. `amount` is then deducted from the caller's
* allowance.
*
* Returns a boolean value indicating whether the operation succeeded.
*
* Emits a {Transfer} event.
*/
function transferFrom(
address sender,
address recipient,
uint256 amount
) external returns (bool);
/**
* @dev Emitted when `value` tokens are moved from one account (`from`) to
* another (`to`).
*
* Note that `value` may be zero.
*/
event Transfer(address indexed from, address indexed to, uint256 value);
/**
* @dev Emitted when the allowance of a `spender` for an `owner` is set by
* a call to {approve}. `value` is the new allowance.
*/
event Approval(address indexed owner, address indexed spender, uint256 value);
}// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
/**
* @dev Provides information about the current execution context, including the
* sender of the transaction and its data. While these are generally available
* via msg.sender and msg.data, they should not be accessed in such a direct
* manner, since when dealing with meta-transactions the account sending and
* paying for execution may not be the actual sender (as far as an application
* is concerned).
*
* This contract is only required for intermediate, library-like contracts.
*/
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
function _msgData() internal view virtual returns (bytes calldata) {
return msg.data;
}
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
interface ICapitalAgent {
function addPool(
address _ssip,
address _currency,
uint256 _scr
) external;
function setPolicy(address _policy) external;
function SSIPWithdraw(uint256 _withdrawAmount) external;
function SSIPStaking(uint256 _stakingAmount) external;
function SSIPPolicyCaim(
uint256 _withdrawAmount,
uint256 _policyId,
bool _isFinished
) external;
function checkCapitalByMCR(address _pool, uint256 _withdrawAmount) external view returns (bool);
function checkCoverageByMLR(uint256 _coverageAmount) external view returns (bool);
function policySale(uint256 _coverageAmount) external;
function updatePolicyStatus(uint256 _policyId) external;
}// SPDX-License-Identifier: MIT
pragma solidity 0.8.0;
interface IExchangeAgent {
function USDC_TOKEN() external view returns (address);
function getTokenAmountForUSDC(address _token, uint256 _usdtAmount) external view returns (uint256);
function getETHAmountForUSDC(uint256 _usdtAmount) external view returns (uint256);
function getETHAmountForToken(address _token, uint256 _tokenAmount) external view returns (uint256);
function getTokenAmountForETH(address _token, uint256 _ethAmount) external view returns (uint256);
function getNeededTokenAmount(
address _token0,
address _token1,
uint256 _token0Amount
) external view returns (uint256);
function convertForToken(
address _token0,
address _token1,
uint256 _token0Amount
) external returns (uint256);
function convertForETH(address _token, uint256 _convertAmount) external returns (uint256);
}// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.0;
interface ISalesPolicy {
function setPremiumPool(address _premiumPool) external;
function setExchangeAgent(address _exchangeAgent) external;
function setCapitalAgent(address _capitalAgent) external;
function setBuyPolicyMaxDeadline(uint256 _maxDeadline) external;
function approvePremium(address _premiumCurrency) external;
function setProtocolURI(string memory newURI) external;
function setSigner(address _signer) external;
function updatePolicyExpired(uint256 _policyId) external;
function markToClaim(uint256 _policyId) external;
function allPoliciesLength() external view returns (uint256);
function getPolicyData(uint256 _policyId)
external
view
returns (
uint256,
uint256,
uint256
);
}// SPDX-License-Identifier: GPL-3.0
pragma solidity 0.8.0;
interface ISingleSidedInsurancePool {
function updatePool() external;
function enterInPool(uint256 _amount) external payable;
function leaveFromPoolInPending(uint256 _amount) external;
function leaveFromPending() external;
function harvest(address _to) external;
function lpTransfer(
address _from,
address _to,
uint256 _amount
) external;
function riskPool() external view returns (address);
}{
"evmVersion": "istanbul",
"libraries": {},
"metadata": {
"bytecodeHash": "ipfs",
"useLiteralContent": true
},
"optimizer": {
"enabled": true,
"runs": 800
},
"remappings": [],
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_exchangeAgent","type":"address"},{"internalType":"address","name":"_UNO_TOKEN","type":"address"},{"internalType":"address","name":"_USDC_TOKEN","type":"address"},{"internalType":"address","name":"_multiSigWallet","type":"address"},{"internalType":"address","name":"_operator","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_ssip","type":"address"},{"indexed":false,"internalType":"address","name":"_currency","type":"address"},{"indexed":false,"internalType":"uint256","name":"_scr","type":"uint256"}],"name":"LogAddPool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_pool","type":"address"}],"name":"LogAddPoolWhiteList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_policy","type":"address"},{"indexed":false,"internalType":"uint256","name":"_policyTokenId","type":"uint256"}],"name":"LogMarkToClaimPolicy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_salesPolicy","type":"address"}],"name":"LogRemovePolicy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_ssip","type":"address"}],"name":"LogRemovePool","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_pool","type":"address"}],"name":"LogRemovePoolWhiteList","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_capitalAgent","type":"address"},{"indexed":false,"internalType":"address","name":"_exchangeAgent","type":"address"}],"name":"LogSetExchangeAgent","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_capitalAgent","type":"address"},{"indexed":false,"internalType":"uint256","name":"_MCR","type":"uint256"}],"name":"LogSetMCR","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_capitalAgent","type":"address"},{"indexed":false,"internalType":"uint256","name":"_MLR","type":"uint256"}],"name":"LogSetMLR","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_operator","type":"address"}],"name":"LogSetOperator","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_salesPolicy","type":"address"}],"name":"LogSetPolicy","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_capitalAgent","type":"address"},{"indexed":true,"internalType":"address","name":"_pool","type":"address"},{"indexed":false,"internalType":"uint256","name":"_SCR","type":"uint256"}],"name":"LogSetSCR","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_factory","type":"address"}],"name":"LogSetSalesPolicyFactory","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_policy","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_policyUtilized","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalUtilizedAmount","type":"uint256"}],"name":"LogUpdatePolicyCoverage","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_policy","type":"address"},{"indexed":false,"internalType":"uint256","name":"_policyTokenId","type":"uint256"}],"name":"LogUpdatePolicyExpired","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_ssip","type":"address"},{"indexed":false,"internalType":"uint256","name":"_poolCapital","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"_totalCapital","type":"uint256"}],"name":"LogUpdatePoolCapital","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"CALC_PRECISION","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MCR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MLR","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawAmount","type":"uint256"},{"internalType":"uint256","name":"_policyId","type":"uint256"},{"internalType":"bool","name":"_isFinished","type":"bool"}],"name":"SSIPPolicyCaim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakingAmount","type":"uint256"}],"name":"SSIPStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_withdrawAmount","type":"uint256"}],"name":"SSIPWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"UNO_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"USDC_TOKEN","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_ssip","type":"address"},{"internalType":"address","name":"_currency","type":"address"},{"internalType":"uint256","name":"_scr","type":"uint256"}],"name":"addPool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ssip","type":"address"},{"internalType":"address","name":"_currency","type":"address"},{"internalType":"uint256","name":"_scr","type":"uint256"}],"name":"addPoolByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"addPoolWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"},{"internalType":"uint256","name":"_withdrawAmount","type":"uint256"}],"name":"checkCapitalByMCR","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_coverageAmount","type":"uint256"}],"name":"checkCoverageByMLR","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"exchangeAgent","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_policyId","type":"uint256"}],"name":"markToClaimPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"policyInfo","outputs":[{"internalType":"address","name":"policy","type":"address"},{"internalType":"uint256","name":"utilizedAmount","type":"uint256"},{"internalType":"bool","name":"exist","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_coverageAmount","type":"uint256"}],"name":"policySale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolInfo","outputs":[{"internalType":"uint256","name":"totalCapital","type":"uint256"},{"internalType":"uint256","name":"SCR","type":"uint256"},{"internalType":"address","name":"currency","type":"address"},{"internalType":"bool","name":"exist","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"poolWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removePolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_ssip","type":"address"}],"name":"removePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pool","type":"address"}],"name":"removePoolWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"salesPolicyFactory","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_exchangeAgent","type":"address"}],"name":"setExchangeAgent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MCR","type":"uint256"}],"name":"setMCR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_MLR","type":"uint256"}],"name":"setMLR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_operator","type":"address"}],"name":"setOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_policy","type":"address"}],"name":"setPolicy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_policy","type":"address"}],"name":"setPolicyByAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_SCR","type":"uint256"},{"internalType":"address","name":"_pool","type":"address"}],"name":"setSCR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_factory","type":"address"}],"name":"setSalesPolicyFactory","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalCapitalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalUtilizedAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_policyId","type":"uint256"}],"name":"updatePolicyStatus","outputs":[],"stateMutability":"nonpayable","type":"function"}]Contract Creation Code
6080604052670de0b6b3a7640000600f553480156200001d57600080fd5b5060405162002bc538038062002bc5833981016040819052620000409162000265565b6001600055620000596200005362000166565b6200016a565b6001600160a01b0385166200008b5760405162461bcd60e51b8152600401620000829062000393565b60405180910390fd5b6001600160a01b038416620000b45760405162461bcd60e51b8152600401620000829062000409565b6001600160a01b038316620000dd5760405162461bcd60e51b815260040162000082906200035c565b6001600160a01b038216620001065760405162461bcd60e51b815260040162000082906200031a565b600280546001600160a01b038088166001600160a01b031992831617909255600480548784169083161790556005805486841690831617905560068054928416929091169190911790556200015b82620001bc565b505050505062000440565b3390565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b620001c662000166565b6001600160a01b0316620001d962000239565b6001600160a01b031614620002025760405162461bcd60e51b81526004016200008290620003d4565b6001600160a01b0381166200022b5760405162461bcd60e51b81526004016200008290620002d4565b62000236816200016a565b50565b6001546001600160a01b031690565b80516001600160a01b03811681146200026057600080fd5b919050565b600080600080600060a086880312156200027d578081fd5b620002888662000248565b9450620002986020870162000248565b9350620002a86040870162000248565b9250620002b86060870162000248565b9150620002c86080870162000248565b90509295509295909350565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b60208082526022908201527f556e6f52653a207a65726f206d756c746973696777616c6c6574206164647265604082015261737360f01b606082015260800190565b60208082526018908201527f556e6f52653a207a65726f205553444320616464726573730000000000000000604082015260600190565b60208082526021908201527f556e6f52653a207a65726f2065786368616e67654167656e74206164647265736040820152607360f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526017908201527f556e6f52653a207a65726f20554e4f2061646472657373000000000000000000604082015260600190565b61277580620004506000396000f3fe608060405234801561001057600080fd5b50600436106102925760003560e01c80638bb7083111610160578063b3ab15fb116100d8578063d8c5c8631161008c578063f2fde38b11610071578063f2fde38b146104f2578063fa56927414610505578063fb6cb8471461050d57610292565b8063d8c5c863146104d7578063d9203b91146104ea57610292565b8063c139b04f116100bd578063c139b04f146104a9578063c3ea3a28146104bc578063d4688a45146104cf57610292565b8063b3ab15fb14610483578063be22041b1461049657610292565b8063974e4d851161012f578063a0931af211610114578063a0931af21461044a578063a65888fb1461045d578063a88d2f7a1461047057610292565b8063974e4d85146104105780639a7b5f111461042757610292565b80638bb70831146103e55780638be5a39f146103ed5780638da5cb5b1461040057806392ff38ec1461040857610292565b80634dc70bac1161020e578063715018a6116101c25780637d4163d3116101a75780637d4163d3146103ac5780637e29d6c2146103bf578063869bd44a146103d257610292565b8063715018a61461039c578063794e5724146103a457610292565b80635b44d576116101f35780635b44d5761461036e57806365cb3a8314610381578063706c2d1b1461038957610292565b80634dc70bac14610351578063570ca7351461036657610292565b806325042fe911610265578063385a128f1161024a578063385a128f146103185780633b7d09461461032b5780634a3a3d141461033e57610292565b806325042fe9146102f057806336760a1c1461031057610292565b80630d757531146102975780630f97b97b146102ac57806318a00d8e146102ca5780631dfa426d146102dd575b600080fd5b6102aa6102a5366004611fa7565b610520565b005b6102b46105fb565b6040516102c1919061203b565b60405180910390f35b6102aa6102d8366004611ef9565b61060a565b6102aa6102eb366004611ef9565b6106f6565b6103036102fe366004611ef9565b6107fe565b6040516102c191906120af565b6102b4610813565b6102aa610326366004611f77565b610822565b6102aa610339366004611ef9565b6108ca565b6102aa61034c366004611ef9565b610a5a565b610359610b6d565b6040516102c19190612668565b6102b4610b73565b6102aa61037c366004611f77565b610b82565b6102aa610c1a565b6102aa610397366004611f13565b610d08565b6102aa610e8d565b610359610ed8565b6102aa6103ba366004611ef9565b610ede565b6102aa6103cd366004611f13565b610f58565b6102aa6103e0366004611f77565b610f87565b610359610ff7565b6102aa6103fb366004611f77565b610ffd565b6102b4611067565b610359611076565b61041861107c565b6040516102c19392919061208c565b61043a610435366004611ef9565b611097565b6040516102c1949392919061267f565b6102aa610458366004611f77565b6110cd565b6102aa61046b366004611ef9565b611171565b6102aa61047e366004611ef9565b611288565b6102aa610491366004611ef9565b611364565b6102aa6104a4366004611f77565b611440565b6103036104b7366004611f4e565b6115f3565b6103036104ca366004611f77565b611606565b610359611619565b6102aa6104e5366004611f77565b61161f565b6102b46116c7565b6102aa610500366004611ef9565b6116d6565b6102b4611747565b6102aa61051b366004611fd2565b611756565b6006546001600160a01b031633146105535760405162461bcd60e51b815260040161054a90612126565b60405180910390fd5b600260005414156105765760405162461bcd60e51b815260040161054a906125c5565b6002600055816105985760405162461bcd60e51b815260040161054a906124c3565b6001600160a01b0381166000818152600760205260409081902060010184905551309033907fade0e16d2bd0d685eef1e5355dc835692faac192ef62225adb31cd0c0b99c8a8906105ea908790612668565b60405180910390a450506001600055565b6004546001600160a01b031681565b6106126117d9565b6001600160a01b0316610623611067565b6001600160a01b0316146106495760405162461bcd60e51b815260040161054a9061244c565b6002600054141561066c5760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166106975760405162461bcd60e51b815260040161054a906121ba565b600280546001600160a01b0319166001600160a01b038316179055604051309033907f28e0ff29ad991f2655c48b0b095a69abbf13aec6c8bc181dd526dbb3f8c9d0b9906106e690859061203b565b60405180910390a3506001600055565b6106fe6117d9565b6001600160a01b031661070f611067565b6001600160a01b0316146107355760405162461bcd60e51b815260040161054a9061244c565b600260005414156107585760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166107835760405162461bcd60e51b815260040161054a906121ba565b604080516060810182526001600160a01b0383168082526000602083018190526001928401839052600980546001600160a01b03191683179055600a819055600b805460ff191690931790925591517f8ba1947a8c64577d7adbd8cbc248c72b68738fe23afef984d842ba5ec5af5cfe9190a2506001600055565b60106020526000908152604090205460ff1681565b6003546001600160a01b031681565b6006546001600160a01b0316331461084c5760405162461bcd60e51b815260040161054a90612126565b6002600054141561086f5760405162461bcd60e51b815260040161054a906125c5565b6002600055806108915760405162461bcd60e51b815260040161054a90612228565b600d819055604051309033907fa55ee73f4232498ac4c250ffa77f4337343a213648a66147d8848f6660fa3fdf906106e6908590612668565b6108d26117d9565b6001600160a01b03166108e3611067565b6001600160a01b0316146109095760405162461bcd60e51b815260040161054a9061244c565b6002600054141561092c5760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166109575760405162461bcd60e51b815260040161054a906121ba565b6001600160a01b038116600090815260076020526040902060020154600160a01b900460ff166109995760405162461bcd60e51b815260040161054a906123a9565b6001600160a01b038116600090815260076020526040902054156109e1576001600160a01b0381166000908152600760205260409020546008546109dd9190612712565b6008555b6001600160a01b0381166000818152600760205260408082208281556001810183905560020180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055517ff54e47602c09e6190ae0c9cba6074e2e211bf36944fd714fbb0bd78aba514cab9190a2506001600055565b610a626117d9565b6001600160a01b0316610a73611067565b6001600160a01b031614610a995760405162461bcd60e51b815260040161054a9061244c565b60026000541415610abc5760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b038116610ae75760405162461bcd60e51b815260040161054a906122cd565b6001600160a01b03811660009081526010602052604090205460ff16610b1f5760405162461bcd60e51b815260040161054a906120ba565b6001600160a01b038116600081815260106020526040808220805460ff19169055517f4151e001c03bfed83a194d10eea2c0edf04f98e382c440c94a947a99d38d2c329190a2506001600055565b600f5481565b6006546001600160a01b031681565b60026000541415610ba55760405162461bcd60e51b815260040161054a906125c5565b600260008181553381526007602052604090200154600160a01b900460ff16610be05760405162461bcd60e51b815260040161054a9061258e565b610bea33826117dd565b610c065760405162461bcd60e51b815260040161054a906123e0565b610c12338260006119b1565b506001600055565b610c226117d9565b6001600160a01b0316610c33611067565b6001600160a01b031614610c595760405162461bcd60e51b815260040161054a9061244c565b60026000541415610c7c5760405162461bcd60e51b815260040161054a906125c5565b6002600055600b5460ff16610ca35760405162461bcd60e51b815260040161054a906123a9565b6000600c819055600980546001600160a01b03198116909155600b805460ff19169055600a8290556040516001600160a01b039091169182917fffb315d96bed6cc0b00a9cc39d15fcbcab7d047fca09660a2d73569cfc75817c9190a2506001600055565b610d106117d9565b6001600160a01b0316610d21611067565b6001600160a01b031614610d475760405162461bcd60e51b815260040161054a9061244c565b6001600160a01b038316610d6d5760405162461bcd60e51b815260040161054a906121ba565b6001600160a01b038316600090815260076020526040902060020154600160a01b900460ff1615610db05760405162461bcd60e51b815260040161054a90612372565b60408051608081018252600080825260208083018581526001600160a01b038088168587019081526001606087018181528b84168088526007909652958890209651875592519286019290925590516002909401805493511515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff959092166001600160a01b0319909416939093179390931692909217905590517f4135167fcda3c31ddaa41eecaaa00c3e3ba8aabf49d039cfad433be34bf659ab90610e809085908590612073565b60405180910390a2505050565b610e956117d9565b6001600160a01b0316610ea6611067565b6001600160a01b031614610ecc5760405162461bcd60e51b815260040161054a9061244c565b610ed66000611c37565b565b600d5481565b60026000541415610f015760405162461bcd60e51b815260040161054a906125c5565b60026000556003546001600160a01b0316610f2e5760405162461bcd60e51b815260040161054a90612481565b6003546001600160a01b031633146107835760405162461bcd60e51b815260040161054a90612531565b3360009081526010602052604090205460ff16610d475760405162461bcd60e51b815260040161054a90612126565b610f8f6117d9565b6001600160a01b0316610fa0611067565b6001600160a01b031614610fc65760405162461bcd60e51b815260040161054a9061244c565b60026000541415610fe95760405162461bcd60e51b815260040161054a906125c5565b6002600055610c1281611c89565b600e5481565b600260005414156110205760405162461bcd60e51b815260040161054a906125c5565b600260008181553381526007602052604090200154600160a01b900460ff1661105b5760405162461bcd60e51b815260040161054a9061258e565b610c12338260016119b1565b6001546001600160a01b031690565b60085481565b600954600a54600b546001600160a01b039092169160ff1683565b6007602052600090815260409020805460018201546002909201549091906001600160a01b03811690600160a01b900460ff1684565b600260005414156110f05760405162461bcd60e51b815260040161054a906125c5565b60026000556009546001600160a01b0316331461111f5760405162461bcd60e51b815260040161054a90612633565b600b5460ff166111415760405162461bcd60e51b815260040161054a906124fa565b61114a81611dee565b6111665760405162461bcd60e51b815260040161054a906120f1565b610c12816001611e23565b6111796117d9565b6001600160a01b031661118a611067565b6001600160a01b0316146111b05760405162461bcd60e51b815260040161054a9061244c565b600260005414156111d35760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166111fe5760405162461bcd60e51b815260040161054a906122cd565b6001600160a01b03811660009081526010602052604090205460ff16156112375760405162461bcd60e51b815260040161054a90612296565b6001600160a01b038116600081815260106020526040808220805460ff19166001179055517f398e8e2ed05e6be725398a28e81fdf023a447b92941bd666e68ce2091b82bcc79190a2506001600055565b6112906117d9565b6001600160a01b03166112a1611067565b6001600160a01b0316146112c75760405162461bcd60e51b815260040161054a9061244c565b600260005414156112ea5760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166113155760405162461bcd60e51b815260040161054a90612415565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f6507596e94e343212d1c22479359f82fffb65f099deb3ebcae9eb33c3d06de9e90600090a2506001600055565b61136c6117d9565b6001600160a01b031661137d611067565b6001600160a01b0316146113a35760405162461bcd60e51b815260040161054a9061244c565b600260005414156113c65760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166113f15760405162461bcd60e51b815260040161054a90612304565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f08c5d29613b4e7468e893fe5f104f5a3ea6e28298f00fbbab9dc9394578c89de90600090a2506001600055565b600260005414156114635760405162461bcd60e51b815260040161054a906125c5565b60026000556009546001600160a01b03166114905760405162461bcd60e51b815260040161054a906121f1565b600954604051637a5402e960e01b8152600091829182916001600160a01b031690637a5402e9906114c5908790600401612668565b60606040518083038186803b1580156114dd57600080fd5b505afa1580156114f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611515919061200e565b91945092509050600061152882846126bb565b4210801591506115e75761153d846000611e23565b6009546040516352eaf0a160e11b81526001600160a01b039091169063a5d5e1429061156d908890600401612668565b600060405180830381600087803b15801561158757600080fd5b505af115801561159b573d6000803e3d6000fd5b50506009546040516001600160a01b0390911692507faf1c77a8196c946ab8e645210cd1e2685b4fb758ddfd474fd918298854dea6fc91506115de908890612668565b60405180910390a25b50506001600055505050565b60006115ff83836117dd565b9392505050565b600061161182611dee565b90505b919050565b600c5481565b6006546001600160a01b031633146116495760405162461bcd60e51b815260040161054a90612126565b6002600054141561166c5760405162461bcd60e51b815260040161054a906125c5565b60026000558061168e5760405162461bcd60e51b815260040161054a9061233b565b600e819055604051309033907fb2f30bd42a6b499419a01b9b79e7b98934167f5a8a8c389ce446e20a8e5df765906106e6908590612668565b6002546001600160a01b031681565b6116de6117d9565b6001600160a01b03166116ef611067565b6001600160a01b0316146117155760405162461bcd60e51b815260040161054a9061244c565b6001600160a01b03811661173b5760405162461bcd60e51b815260040161054a9061215d565b61174481611c37565b50565b6005546001600160a01b031681565b600260005414156117795760405162461bcd60e51b815260040161054a906125c5565b600260008181553381526007602052604090200154600160a01b900460ff166117b45760405162461bcd60e51b815260040161054a9061258e565b6117c0338460006119b1565b80156117cf576117cf82611c89565b5050600160005550565b3390565b6001600160a01b03808316600090815260076020526040812060020154600554919290811691839116821415611814575082611939565b6001600160a01b0382166118ad5760025460055460405163ba560ed960e01b81526001600160a01b039283169263ba560ed992611858929116908890600401612073565b60206040518083038186803b15801561187057600080fd5b505afa158015611884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a89190611f8f565b611936565b600254600554604051631a44cdf360e11b81526001600160a01b03928316926334899be6926118e692879290911690899060040161204f565b60206040518083038186803b1580156118fe57600080fd5b505afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119369190611f8f565b90505b6000600f54600d5460085461194e91906126f3565b61195891906126d3565b826008546119669190612712565b6001600160a01b0388166000908152600760205260408120600181015490549390921015935091611998908590612712565b101590508180156119a65750805b979650505050505050565b6001600160a01b0380841660009081526007602052604081206002015460055490831692168214156119e4575082611b09565b6001600160a01b038216611a7d5760025460055460405163ba560ed960e01b81526001600160a01b039283169263ba560ed992611a28929116908890600401612073565b60206040518083038186803b158015611a4057600080fd5b505afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190611f8f565b611b06565b600254600554604051631a44cdf360e11b81526001600160a01b03928316926334899be692611ab692879290911690899060040161204f565b60206040518083038186803b158015611ace57600080fd5b505afa158015611ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b069190611f8f565b90505b82611b46576001600160a01b038516600090815260076020526040902054811115611b465760405162461bcd60e51b815260040161054a906125fc565b82611b74576001600160a01b038516600090815260076020526040902054611b6f908290612712565b611b98565b6001600160a01b038516600090815260076020526040902054611b989082906126bb565b6001600160a01b03861660009081526007602052604090205582611bc95780600854611bc49190612712565b611bd7565b80600854611bd791906126bb565b60088190556001600160a01b0386166000818152600760205260409081902054905191927f4c54f63d510ce2f2f9bf99bf203458cb67aa75fae97ccab560a1654eba9dbf2492611c28929190612671565b60405180910390a25050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6009546001600160a01b0316611cb15760405162461bcd60e51b815260040161054a906121f1565b600954604051637a5402e960e01b81526000916001600160a01b031690637a5402e990611ce2908590600401612668565b60606040518083038186803b158015611cfa57600080fd5b505afa158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d32919061200e565b50509050611d41816000611e23565b6009546040516319d9b48f60e11b81526001600160a01b03909116906333b3691e90611d71908590600401612668565b600060405180830381600087803b158015611d8b57600080fd5b505af1158015611d9f573d6000803e3d6000fd5b50506009546040516001600160a01b0390911692507f56b46e5b13fdb3c0b1989f448e91b2ad68cf0c8e8ddd87f996720708ae3a15699150611de2908590612668565b60405180910390a25050565b6000600f54600e54600854611e0391906126f3565b611e0d91906126d3565b82600c54611e1b91906126bb565b111592915050565b80611e4a57600a54821115611e4a5760405162461bcd60e51b815260040161054a9061225f565b80611e6257600a54611e5d908390612712565b611e70565b600a54611e709083906126bb565b600a5580611e8b5781600c54611e869190612712565b611e99565b81600c54611e9991906126bb565b600c819055600954600a546040516001600160a01b03909216927facece99dd8b86cb96519fb17caded4d103b35a8261463d0d11f80a411460730092611de292879290916126a5565b80356001600160a01b038116811461161457600080fd5b600060208284031215611f0a578081fd5b6115ff82611ee2565b600080600060608486031215611f27578182fd5b611f3084611ee2565b9250611f3e60208501611ee2565b9150604084013590509250925092565b60008060408385031215611f60578182fd5b611f6983611ee2565b946020939093013593505050565b600060208284031215611f88578081fd5b5035919050565b600060208284031215611fa0578081fd5b5051919050565b60008060408385031215611fb9578182fd5b82359150611fc960208401611ee2565b90509250929050565b600080600060608486031215611fe6578283fd5b833592506020840135915060408401358015158114612003578182fd5b809150509250925092565b600080600060608486031215612022578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b901515815260200190565b60208082526014908201527f556e6f52653a206e6f207768697465206c697374000000000000000000000000604082015260600190565b6020808252818101527f556e6f52653a206d6178696d756d206c65766572616765206f766572666c6f77604082015260600190565b6020808252601e908201527f556e6f52653a204361706974616c204167656e7420466f7262696464656e0000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f556e6f52653a207a65726f206164647265737300000000000000000000000000604082015260600190565b6020808252601b908201527f556e6f52653a206e6f2065786973742073616c6573506f6c6963790000000000604082015260600190565b6020808252600f908201527f556e6f52653a207a65726f206d63720000000000000000000000000000000000604082015260600190565b6020808252601f908201527f556e6f52653a20706f6c69637920636f766572616765206f766572666c6f7700604082015260600190565b60208082526019908201527f556e6f52653a207768697465206c69737420616c726561647900000000000000604082015260600190565b60208082526018908201527f556e6f52653a207a65726f20706f6f6c20616464726573730000000000000000604082015260600190565b6020808252601c908201527f556e6f52653a207a65726f206f70657261746f72206164647265737300000000604082015260600190565b6020808252600f908201527f556e6f52653a207a65726f206d6c720000000000000000000000000000000000604082015260600190565b60208082526019908201527f556e6f52653a20616c726561647920657869737420706f6f6c00000000000000604082015260600190565b60208082526013908201527f556e6f52653a206e6f206578697420706f6f6c00000000000000000000000000604082015260600190565b6020808252818101527f556e6f52653a206d696e696d756d206361706974616c20756e646572666c6f77604082015260600190565b6020808252601b908201527f556e6f52653a207a65726f20666163746f727920616464726573730000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f556e6f52653a206e6f742073657420666163746f727920616464726573732079604082015261195d60f21b606082015260800190565b6020808252600f908201527f556e6f52653a207a65726f207363720000000000000000000000000000000000604082015260600190565b60208082526016908201527f556e6f52653a206e6f20657869737420706f6c69637900000000000000000000604082015260600190565b60208082526027908201527f556e6f52653a206f6e6c792073616c6573506f6c696379466163746f7279206360408201527f616e2063616c6c00000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f556e6f52653a206e6f2065786973742073736970000000000000000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601c908201527f556e6f52653a20706f6f6c206361706974616c206f766572666c6f7700000000604082015260600190565b6020808252818101527f556e6f52653a206f6e6c792073616c6573506f6c6963792063616e2063616c6c604082015260600190565b90815260200190565b918252602082015260400190565b93845260208401929092526001600160a01b031660408301521515606082015260800190565b9283526020830191909152604082015260600190565b600082198211156126ce576126ce612729565b500190565b6000826126ee57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561270d5761270d612729565b500290565b60008282101561272457612724612729565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220cc728986f6a32a1a45223c939a948cd8b142224b99ba597eeb34d87c1d3d288064736f6c634300080000330000000000000000000000006ac1081cbb92524170e61cffd37bdaf3b38fbc4c000000000000000000000000474021845c4643113458ea4414bdb7fb74a01a77000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000008c3d5c9538256dab8eb4b197370574340fe3254f000000000000000000000000721d214267247568da3a9123abfac71fc18a5ee4
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106102925760003560e01c80638bb7083111610160578063b3ab15fb116100d8578063d8c5c8631161008c578063f2fde38b11610071578063f2fde38b146104f2578063fa56927414610505578063fb6cb8471461050d57610292565b8063d8c5c863146104d7578063d9203b91146104ea57610292565b8063c139b04f116100bd578063c139b04f146104a9578063c3ea3a28146104bc578063d4688a45146104cf57610292565b8063b3ab15fb14610483578063be22041b1461049657610292565b8063974e4d851161012f578063a0931af211610114578063a0931af21461044a578063a65888fb1461045d578063a88d2f7a1461047057610292565b8063974e4d85146104105780639a7b5f111461042757610292565b80638bb70831146103e55780638be5a39f146103ed5780638da5cb5b1461040057806392ff38ec1461040857610292565b80634dc70bac1161020e578063715018a6116101c25780637d4163d3116101a75780637d4163d3146103ac5780637e29d6c2146103bf578063869bd44a146103d257610292565b8063715018a61461039c578063794e5724146103a457610292565b80635b44d576116101f35780635b44d5761461036e57806365cb3a8314610381578063706c2d1b1461038957610292565b80634dc70bac14610351578063570ca7351461036657610292565b806325042fe911610265578063385a128f1161024a578063385a128f146103185780633b7d09461461032b5780634a3a3d141461033e57610292565b806325042fe9146102f057806336760a1c1461031057610292565b80630d757531146102975780630f97b97b146102ac57806318a00d8e146102ca5780631dfa426d146102dd575b600080fd5b6102aa6102a5366004611fa7565b610520565b005b6102b46105fb565b6040516102c1919061203b565b60405180910390f35b6102aa6102d8366004611ef9565b61060a565b6102aa6102eb366004611ef9565b6106f6565b6103036102fe366004611ef9565b6107fe565b6040516102c191906120af565b6102b4610813565b6102aa610326366004611f77565b610822565b6102aa610339366004611ef9565b6108ca565b6102aa61034c366004611ef9565b610a5a565b610359610b6d565b6040516102c19190612668565b6102b4610b73565b6102aa61037c366004611f77565b610b82565b6102aa610c1a565b6102aa610397366004611f13565b610d08565b6102aa610e8d565b610359610ed8565b6102aa6103ba366004611ef9565b610ede565b6102aa6103cd366004611f13565b610f58565b6102aa6103e0366004611f77565b610f87565b610359610ff7565b6102aa6103fb366004611f77565b610ffd565b6102b4611067565b610359611076565b61041861107c565b6040516102c19392919061208c565b61043a610435366004611ef9565b611097565b6040516102c1949392919061267f565b6102aa610458366004611f77565b6110cd565b6102aa61046b366004611ef9565b611171565b6102aa61047e366004611ef9565b611288565b6102aa610491366004611ef9565b611364565b6102aa6104a4366004611f77565b611440565b6103036104b7366004611f4e565b6115f3565b6103036104ca366004611f77565b611606565b610359611619565b6102aa6104e5366004611f77565b61161f565b6102b46116c7565b6102aa610500366004611ef9565b6116d6565b6102b4611747565b6102aa61051b366004611fd2565b611756565b6006546001600160a01b031633146105535760405162461bcd60e51b815260040161054a90612126565b60405180910390fd5b600260005414156105765760405162461bcd60e51b815260040161054a906125c5565b6002600055816105985760405162461bcd60e51b815260040161054a906124c3565b6001600160a01b0381166000818152600760205260409081902060010184905551309033907fade0e16d2bd0d685eef1e5355dc835692faac192ef62225adb31cd0c0b99c8a8906105ea908790612668565b60405180910390a450506001600055565b6004546001600160a01b031681565b6106126117d9565b6001600160a01b0316610623611067565b6001600160a01b0316146106495760405162461bcd60e51b815260040161054a9061244c565b6002600054141561066c5760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166106975760405162461bcd60e51b815260040161054a906121ba565b600280546001600160a01b0319166001600160a01b038316179055604051309033907f28e0ff29ad991f2655c48b0b095a69abbf13aec6c8bc181dd526dbb3f8c9d0b9906106e690859061203b565b60405180910390a3506001600055565b6106fe6117d9565b6001600160a01b031661070f611067565b6001600160a01b0316146107355760405162461bcd60e51b815260040161054a9061244c565b600260005414156107585760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166107835760405162461bcd60e51b815260040161054a906121ba565b604080516060810182526001600160a01b0383168082526000602083018190526001928401839052600980546001600160a01b03191683179055600a819055600b805460ff191690931790925591517f8ba1947a8c64577d7adbd8cbc248c72b68738fe23afef984d842ba5ec5af5cfe9190a2506001600055565b60106020526000908152604090205460ff1681565b6003546001600160a01b031681565b6006546001600160a01b0316331461084c5760405162461bcd60e51b815260040161054a90612126565b6002600054141561086f5760405162461bcd60e51b815260040161054a906125c5565b6002600055806108915760405162461bcd60e51b815260040161054a90612228565b600d819055604051309033907fa55ee73f4232498ac4c250ffa77f4337343a213648a66147d8848f6660fa3fdf906106e6908590612668565b6108d26117d9565b6001600160a01b03166108e3611067565b6001600160a01b0316146109095760405162461bcd60e51b815260040161054a9061244c565b6002600054141561092c5760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166109575760405162461bcd60e51b815260040161054a906121ba565b6001600160a01b038116600090815260076020526040902060020154600160a01b900460ff166109995760405162461bcd60e51b815260040161054a906123a9565b6001600160a01b038116600090815260076020526040902054156109e1576001600160a01b0381166000908152600760205260409020546008546109dd9190612712565b6008555b6001600160a01b0381166000818152600760205260408082208281556001810183905560020180547fffffffffffffffffffffff000000000000000000000000000000000000000000169055517ff54e47602c09e6190ae0c9cba6074e2e211bf36944fd714fbb0bd78aba514cab9190a2506001600055565b610a626117d9565b6001600160a01b0316610a73611067565b6001600160a01b031614610a995760405162461bcd60e51b815260040161054a9061244c565b60026000541415610abc5760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b038116610ae75760405162461bcd60e51b815260040161054a906122cd565b6001600160a01b03811660009081526010602052604090205460ff16610b1f5760405162461bcd60e51b815260040161054a906120ba565b6001600160a01b038116600081815260106020526040808220805460ff19169055517f4151e001c03bfed83a194d10eea2c0edf04f98e382c440c94a947a99d38d2c329190a2506001600055565b600f5481565b6006546001600160a01b031681565b60026000541415610ba55760405162461bcd60e51b815260040161054a906125c5565b600260008181553381526007602052604090200154600160a01b900460ff16610be05760405162461bcd60e51b815260040161054a9061258e565b610bea33826117dd565b610c065760405162461bcd60e51b815260040161054a906123e0565b610c12338260006119b1565b506001600055565b610c226117d9565b6001600160a01b0316610c33611067565b6001600160a01b031614610c595760405162461bcd60e51b815260040161054a9061244c565b60026000541415610c7c5760405162461bcd60e51b815260040161054a906125c5565b6002600055600b5460ff16610ca35760405162461bcd60e51b815260040161054a906123a9565b6000600c819055600980546001600160a01b03198116909155600b805460ff19169055600a8290556040516001600160a01b039091169182917fffb315d96bed6cc0b00a9cc39d15fcbcab7d047fca09660a2d73569cfc75817c9190a2506001600055565b610d106117d9565b6001600160a01b0316610d21611067565b6001600160a01b031614610d475760405162461bcd60e51b815260040161054a9061244c565b6001600160a01b038316610d6d5760405162461bcd60e51b815260040161054a906121ba565b6001600160a01b038316600090815260076020526040902060020154600160a01b900460ff1615610db05760405162461bcd60e51b815260040161054a90612372565b60408051608081018252600080825260208083018581526001600160a01b038088168587019081526001606087018181528b84168088526007909652958890209651875592519286019290925590516002909401805493511515600160a01b027fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff959092166001600160a01b0319909416939093179390931692909217905590517f4135167fcda3c31ddaa41eecaaa00c3e3ba8aabf49d039cfad433be34bf659ab90610e809085908590612073565b60405180910390a2505050565b610e956117d9565b6001600160a01b0316610ea6611067565b6001600160a01b031614610ecc5760405162461bcd60e51b815260040161054a9061244c565b610ed66000611c37565b565b600d5481565b60026000541415610f015760405162461bcd60e51b815260040161054a906125c5565b60026000556003546001600160a01b0316610f2e5760405162461bcd60e51b815260040161054a90612481565b6003546001600160a01b031633146107835760405162461bcd60e51b815260040161054a90612531565b3360009081526010602052604090205460ff16610d475760405162461bcd60e51b815260040161054a90612126565b610f8f6117d9565b6001600160a01b0316610fa0611067565b6001600160a01b031614610fc65760405162461bcd60e51b815260040161054a9061244c565b60026000541415610fe95760405162461bcd60e51b815260040161054a906125c5565b6002600055610c1281611c89565b600e5481565b600260005414156110205760405162461bcd60e51b815260040161054a906125c5565b600260008181553381526007602052604090200154600160a01b900460ff1661105b5760405162461bcd60e51b815260040161054a9061258e565b610c12338260016119b1565b6001546001600160a01b031690565b60085481565b600954600a54600b546001600160a01b039092169160ff1683565b6007602052600090815260409020805460018201546002909201549091906001600160a01b03811690600160a01b900460ff1684565b600260005414156110f05760405162461bcd60e51b815260040161054a906125c5565b60026000556009546001600160a01b0316331461111f5760405162461bcd60e51b815260040161054a90612633565b600b5460ff166111415760405162461bcd60e51b815260040161054a906124fa565b61114a81611dee565b6111665760405162461bcd60e51b815260040161054a906120f1565b610c12816001611e23565b6111796117d9565b6001600160a01b031661118a611067565b6001600160a01b0316146111b05760405162461bcd60e51b815260040161054a9061244c565b600260005414156111d35760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166111fe5760405162461bcd60e51b815260040161054a906122cd565b6001600160a01b03811660009081526010602052604090205460ff16156112375760405162461bcd60e51b815260040161054a90612296565b6001600160a01b038116600081815260106020526040808220805460ff19166001179055517f398e8e2ed05e6be725398a28e81fdf023a447b92941bd666e68ce2091b82bcc79190a2506001600055565b6112906117d9565b6001600160a01b03166112a1611067565b6001600160a01b0316146112c75760405162461bcd60e51b815260040161054a9061244c565b600260005414156112ea5760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166113155760405162461bcd60e51b815260040161054a90612415565b600380546001600160a01b0319166001600160a01b0383169081179091556040517f6507596e94e343212d1c22479359f82fffb65f099deb3ebcae9eb33c3d06de9e90600090a2506001600055565b61136c6117d9565b6001600160a01b031661137d611067565b6001600160a01b0316146113a35760405162461bcd60e51b815260040161054a9061244c565b600260005414156113c65760405162461bcd60e51b815260040161054a906125c5565b60026000556001600160a01b0381166113f15760405162461bcd60e51b815260040161054a90612304565b600680546001600160a01b0319166001600160a01b0383169081179091556040517f08c5d29613b4e7468e893fe5f104f5a3ea6e28298f00fbbab9dc9394578c89de90600090a2506001600055565b600260005414156114635760405162461bcd60e51b815260040161054a906125c5565b60026000556009546001600160a01b03166114905760405162461bcd60e51b815260040161054a906121f1565b600954604051637a5402e960e01b8152600091829182916001600160a01b031690637a5402e9906114c5908790600401612668565b60606040518083038186803b1580156114dd57600080fd5b505afa1580156114f1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611515919061200e565b91945092509050600061152882846126bb565b4210801591506115e75761153d846000611e23565b6009546040516352eaf0a160e11b81526001600160a01b039091169063a5d5e1429061156d908890600401612668565b600060405180830381600087803b15801561158757600080fd5b505af115801561159b573d6000803e3d6000fd5b50506009546040516001600160a01b0390911692507faf1c77a8196c946ab8e645210cd1e2685b4fb758ddfd474fd918298854dea6fc91506115de908890612668565b60405180910390a25b50506001600055505050565b60006115ff83836117dd565b9392505050565b600061161182611dee565b90505b919050565b600c5481565b6006546001600160a01b031633146116495760405162461bcd60e51b815260040161054a90612126565b6002600054141561166c5760405162461bcd60e51b815260040161054a906125c5565b60026000558061168e5760405162461bcd60e51b815260040161054a9061233b565b600e819055604051309033907fb2f30bd42a6b499419a01b9b79e7b98934167f5a8a8c389ce446e20a8e5df765906106e6908590612668565b6002546001600160a01b031681565b6116de6117d9565b6001600160a01b03166116ef611067565b6001600160a01b0316146117155760405162461bcd60e51b815260040161054a9061244c565b6001600160a01b03811661173b5760405162461bcd60e51b815260040161054a9061215d565b61174481611c37565b50565b6005546001600160a01b031681565b600260005414156117795760405162461bcd60e51b815260040161054a906125c5565b600260008181553381526007602052604090200154600160a01b900460ff166117b45760405162461bcd60e51b815260040161054a9061258e565b6117c0338460006119b1565b80156117cf576117cf82611c89565b5050600160005550565b3390565b6001600160a01b03808316600090815260076020526040812060020154600554919290811691839116821415611814575082611939565b6001600160a01b0382166118ad5760025460055460405163ba560ed960e01b81526001600160a01b039283169263ba560ed992611858929116908890600401612073565b60206040518083038186803b15801561187057600080fd5b505afa158015611884573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118a89190611f8f565b611936565b600254600554604051631a44cdf360e11b81526001600160a01b03928316926334899be6926118e692879290911690899060040161204f565b60206040518083038186803b1580156118fe57600080fd5b505afa158015611912573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119369190611f8f565b90505b6000600f54600d5460085461194e91906126f3565b61195891906126d3565b826008546119669190612712565b6001600160a01b0388166000908152600760205260408120600181015490549390921015935091611998908590612712565b101590508180156119a65750805b979650505050505050565b6001600160a01b0380841660009081526007602052604081206002015460055490831692168214156119e4575082611b09565b6001600160a01b038216611a7d5760025460055460405163ba560ed960e01b81526001600160a01b039283169263ba560ed992611a28929116908890600401612073565b60206040518083038186803b158015611a4057600080fd5b505afa158015611a54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a789190611f8f565b611b06565b600254600554604051631a44cdf360e11b81526001600160a01b03928316926334899be692611ab692879290911690899060040161204f565b60206040518083038186803b158015611ace57600080fd5b505afa158015611ae2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b069190611f8f565b90505b82611b46576001600160a01b038516600090815260076020526040902054811115611b465760405162461bcd60e51b815260040161054a906125fc565b82611b74576001600160a01b038516600090815260076020526040902054611b6f908290612712565b611b98565b6001600160a01b038516600090815260076020526040902054611b989082906126bb565b6001600160a01b03861660009081526007602052604090205582611bc95780600854611bc49190612712565b611bd7565b80600854611bd791906126bb565b60088190556001600160a01b0386166000818152600760205260409081902054905191927f4c54f63d510ce2f2f9bf99bf203458cb67aa75fae97ccab560a1654eba9dbf2492611c28929190612671565b60405180910390a25050505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6009546001600160a01b0316611cb15760405162461bcd60e51b815260040161054a906121f1565b600954604051637a5402e960e01b81526000916001600160a01b031690637a5402e990611ce2908590600401612668565b60606040518083038186803b158015611cfa57600080fd5b505afa158015611d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d32919061200e565b50509050611d41816000611e23565b6009546040516319d9b48f60e11b81526001600160a01b03909116906333b3691e90611d71908590600401612668565b600060405180830381600087803b158015611d8b57600080fd5b505af1158015611d9f573d6000803e3d6000fd5b50506009546040516001600160a01b0390911692507f56b46e5b13fdb3c0b1989f448e91b2ad68cf0c8e8ddd87f996720708ae3a15699150611de2908590612668565b60405180910390a25050565b6000600f54600e54600854611e0391906126f3565b611e0d91906126d3565b82600c54611e1b91906126bb565b111592915050565b80611e4a57600a54821115611e4a5760405162461bcd60e51b815260040161054a9061225f565b80611e6257600a54611e5d908390612712565b611e70565b600a54611e709083906126bb565b600a5580611e8b5781600c54611e869190612712565b611e99565b81600c54611e9991906126bb565b600c819055600954600a546040516001600160a01b03909216927facece99dd8b86cb96519fb17caded4d103b35a8261463d0d11f80a411460730092611de292879290916126a5565b80356001600160a01b038116811461161457600080fd5b600060208284031215611f0a578081fd5b6115ff82611ee2565b600080600060608486031215611f27578182fd5b611f3084611ee2565b9250611f3e60208501611ee2565b9150604084013590509250925092565b60008060408385031215611f60578182fd5b611f6983611ee2565b946020939093013593505050565b600060208284031215611f88578081fd5b5035919050565b600060208284031215611fa0578081fd5b5051919050565b60008060408385031215611fb9578182fd5b82359150611fc960208401611ee2565b90509250929050565b600080600060608486031215611fe6578283fd5b833592506020840135915060408401358015158114612003578182fd5b809150509250925092565b600080600060608486031215612022578283fd5b8351925060208401519150604084015190509250925092565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b901515815260200190565b60208082526014908201527f556e6f52653a206e6f207768697465206c697374000000000000000000000000604082015260600190565b6020808252818101527f556e6f52653a206d6178696d756d206c65766572616765206f766572666c6f77604082015260600190565b6020808252601e908201527f556e6f52653a204361706974616c204167656e7420466f7262696464656e0000604082015260600190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f556e6f52653a207a65726f206164647265737300000000000000000000000000604082015260600190565b6020808252601b908201527f556e6f52653a206e6f2065786973742073616c6573506f6c6963790000000000604082015260600190565b6020808252600f908201527f556e6f52653a207a65726f206d63720000000000000000000000000000000000604082015260600190565b6020808252601f908201527f556e6f52653a20706f6c69637920636f766572616765206f766572666c6f7700604082015260600190565b60208082526019908201527f556e6f52653a207768697465206c69737420616c726561647900000000000000604082015260600190565b60208082526018908201527f556e6f52653a207a65726f20706f6f6c20616464726573730000000000000000604082015260600190565b6020808252601c908201527f556e6f52653a207a65726f206f70657261746f72206164647265737300000000604082015260600190565b6020808252600f908201527f556e6f52653a207a65726f206d6c720000000000000000000000000000000000604082015260600190565b60208082526019908201527f556e6f52653a20616c726561647920657869737420706f6f6c00000000000000604082015260600190565b60208082526013908201527f556e6f52653a206e6f206578697420706f6f6c00000000000000000000000000604082015260600190565b6020808252818101527f556e6f52653a206d696e696d756d206361706974616c20756e646572666c6f77604082015260600190565b6020808252601b908201527f556e6f52653a207a65726f20666163746f727920616464726573730000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526022908201527f556e6f52653a206e6f742073657420666163746f727920616464726573732079604082015261195d60f21b606082015260800190565b6020808252600f908201527f556e6f52653a207a65726f207363720000000000000000000000000000000000604082015260600190565b60208082526016908201527f556e6f52653a206e6f20657869737420706f6c69637900000000000000000000604082015260600190565b60208082526027908201527f556e6f52653a206f6e6c792073616c6573506f6c696379466163746f7279206360408201527f616e2063616c6c00000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f556e6f52653a206e6f2065786973742073736970000000000000000000000000604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601c908201527f556e6f52653a20706f6f6c206361706974616c206f766572666c6f7700000000604082015260600190565b6020808252818101527f556e6f52653a206f6e6c792073616c6573506f6c6963792063616e2063616c6c604082015260600190565b90815260200190565b918252602082015260400190565b93845260208401929092526001600160a01b031660408301521515606082015260800190565b9283526020830191909152604082015260600190565b600082198211156126ce576126ce612729565b500190565b6000826126ee57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561270d5761270d612729565b500290565b60008282101561272457612724612729565b500390565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220cc728986f6a32a1a45223c939a948cd8b142224b99ba597eeb34d87c1d3d288064736f6c63430008000033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000006ac1081cbb92524170e61cffd37bdaf3b38fbc4c000000000000000000000000474021845c4643113458ea4414bdb7fb74a01a77000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000008c3d5c9538256dab8eb4b197370574340fe3254f000000000000000000000000721d214267247568da3a9123abfac71fc18a5ee4
-----Decoded View---------------
Arg [0] : _exchangeAgent (address): 0x6aC1081CBb92524170E61CFFD37bDaF3b38FBC4c
Arg [1] : _UNO_TOKEN (address): 0x474021845C4643113458ea4414bdb7fB74A01A77
Arg [2] : _USDC_TOKEN (address): 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
Arg [3] : _multiSigWallet (address): 0x8c3d5c9538256DAB8Eb4B197370574340fe3254F
Arg [4] : _operator (address): 0x721d214267247568DA3A9123abfAc71fc18a5EE4
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000006ac1081cbb92524170e61cffd37bdaf3b38fbc4c
Arg [1] : 000000000000000000000000474021845c4643113458ea4414bdb7fb74a01a77
Arg [2] : 000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
Arg [3] : 0000000000000000000000008c3d5c9538256dab8eb4b197370574340fe3254f
Arg [4] : 000000000000000000000000721d214267247568da3a9123abfac71fc18a5ee4
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.