Source Code
Overview
ETH Balance
0 ETH
Eth Value
$0.00Latest 9 from a total of 9 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Set Core | 12105480 | 1833 days ago | IN | 0 ETH | 0.00539752 | ||||
| Update Farm | 12100575 | 1834 days ago | IN | 0 ETH | 0.00631537 | ||||
| Update Farm | 12095892 | 1835 days ago | IN | 0 ETH | 0.02002005 | ||||
| Update Farm | 12095357 | 1835 days ago | IN | 0 ETH | 0.00631537 | ||||
| Update Farm | 12095183 | 1835 days ago | IN | 0 ETH | 0.00606276 | ||||
| Update Farm | 12094901 | 1835 days ago | IN | 0 ETH | 0.03396187 | ||||
| Update Farm | 12088526 | 1836 days ago | IN | 0 ETH | 0.00631537 | ||||
| Set Swap Proxy | 12029084 | 1845 days ago | IN | 0 ETH | 0.0045823 | ||||
| Set SAFU | 12028840 | 1845 days ago | IN | 0 ETH | 0.00323872 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
XConfig
Compiler Version
v0.5.17+commit.d19bba13
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2021-03-13
*/
// File: contracts/XConst.sol
pragma solidity 0.5.17;
contract XConst {
uint256 public constant BONE = 10**18;
uint256 public constant MIN_BOUND_TOKENS = 2;
uint256 public constant MAX_BOUND_TOKENS = 8;
uint256 public constant EXIT_ZERO_FEE = 0;
uint256 public constant MIN_WEIGHT = BONE;
uint256 public constant MAX_WEIGHT = BONE * 50;
uint256 public constant MAX_TOTAL_WEIGHT = BONE * 50;
// min effective value: 0.000001 TOKEN
uint256 public constant MIN_BALANCE = 10**6;
// BONE/(10**10) XPT
uint256 public constant MIN_POOL_AMOUNT = 10**8;
uint256 public constant INIT_POOL_SUPPLY = BONE * 100;
uint256 public constant MAX_IN_RATIO = BONE / 2;
uint256 public constant MAX_OUT_RATIO = (BONE / 3) + 1 wei;
}
// File: contracts/interface/IXPool.sol
pragma solidity 0.5.17;
interface IXPool {
// XPToken
event Approval(address indexed src, address indexed dst, uint256 amt);
event Transfer(address indexed src, address indexed dst, uint256 amt);
function totalSupply() external view returns (uint256);
function balanceOf(address whom) external view returns (uint256);
function allowance(address src, address dst)
external
view
returns (uint256);
function approve(address dst, uint256 amt) external returns (bool);
function transfer(address dst, uint256 amt) external returns (bool);
function transferFrom(
address src,
address dst,
uint256 amt
) external returns (bool);
// Swap
function swapExactAmountIn(
address tokenIn,
uint256 tokenAmountIn,
address tokenOut,
uint256 minAmountOut,
uint256 maxPrice
) external returns (uint256 tokenAmountOut, uint256 spotPriceAfter);
function swapExactAmountOut(
address tokenIn,
uint256 maxAmountIn,
address tokenOut,
uint256 tokenAmountOut,
uint256 maxPrice
) external returns (uint256 tokenAmountIn, uint256 spotPriceAfter);
// Referral
function swapExactAmountInRefer(
address tokenIn,
uint256 tokenAmountIn,
address tokenOut,
uint256 minAmountOut,
uint256 maxPrice,
address referrer
) external returns (uint256 tokenAmountOut, uint256 spotPriceAfter);
function swapExactAmountOutRefer(
address tokenIn,
uint256 maxAmountIn,
address tokenOut,
uint256 tokenAmountOut,
uint256 maxPrice,
address referrer
) external returns (uint256 tokenAmountIn, uint256 spotPriceAfter);
// Pool Data
function isBound(address token) external view returns (bool);
function getFinalTokens() external view returns (address[] memory tokens);
function getBalance(address token) external view returns (uint256);
function swapFee() external view returns (uint256);
function exitFee() external view returns (uint256);
function finalized() external view returns (uint256);
function controller() external view returns (uint256);
function isFarmPool() external view returns (uint256);
function xconfig() external view returns (uint256);
function getDenormalizedWeight(address) external view returns (uint256);
function getTotalDenormalizedWeight() external view returns (uint256);
function getVersion() external view returns (bytes32);
function calcInGivenOut(
uint256 tokenBalanceIn,
uint256 tokenWeightIn,
uint256 tokenBalanceOut,
uint256 tokenWeightOut,
uint256 tokenAmountOut,
uint256 _swapFee
) external pure returns (uint256 tokenAmountIn);
function calcOutGivenIn(
uint256 tokenBalanceIn,
uint256 tokenWeightIn,
uint256 tokenBalanceOut,
uint256 tokenWeightOut,
uint256 tokenAmountIn,
uint256 _swapFee
) external pure returns (uint256 tokenAmountOut);
// Pool Managment
function setController(address _controller) external;
function setExitFee(uint256 newFee) external;
function finalize(uint256 _swapFee) external;
function bind(address token, uint256 denorm) external;
function joinPool(uint256 poolAmountOut, uint256[] calldata maxAmountsIn)
external;
function exitPool(uint256 poolAmountIn, uint256[] calldata minAmountsOut)
external;
function joinswapExternAmountIn(
address tokenIn,
uint256 tokenAmountIn,
uint256 minPoolAmountOut
) external returns (uint256 poolAmountOut);
function exitswapPoolAmountIn(
address tokenOut,
uint256 poolAmountIn,
uint256 minAmountOut
) external returns (uint256 tokenAmountOut);
// Pool Governance
function updateSafu(address safu, uint256 fee) external;
function updateFarm(bool isFarm) external;
}
// File: contracts/interface/IERC20.sol
pragma solidity 0.5.17;
interface IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
function totalSupply() external view returns (uint256);
function balanceOf(address _owner) external view returns (uint256 balance);
function transfer(address _to, uint256 _value)
external
returns (bool success);
function transferFrom(
address _from,
address _to,
uint256 _value
) external returns (bool success);
function approve(address _spender, uint256 _value)
external
returns (bool success);
function allowance(address _owner, address _spender)
external
view
returns (uint256 remaining);
}
// File: contracts/lib/Address.sol
pragma solidity 0.5.17;
//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v2.5.0/contracts/utils/Address.sol
/**
* @dev Collection of functions related to the address type
*/
library Address {
/**
* @dev Returns true if `account` is a contract.
*
* [IMPORTANT]
* ====
* It is unsafe to assume that an address for which this function returns
* false is an externally-owned account (EOA) and not a contract.
*
* Among others, `isContract` will return false for the following
* types of addresses:
*
* - an externally-owned account
* - a contract in construction
* - an address where a contract will be created
* - an address where a contract lived, but was destroyed
* ====
*/
function isContract(address account) internal view returns (bool) {
// According to EIP-1052, 0x0 is the value returned for not-yet created accounts
// and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
// for accounts without code, i.e. `keccak256('')`
bytes32 codehash;
bytes32 accountHash =
0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
// solhint-disable-next-line no-inline-assembly
assembly {
codehash := extcodehash(account)
}
return (codehash != accountHash && codehash != 0x0);
}
/**
* @dev Converts an `address` into `address payable`. Note that this is
* simply a type cast: the actual underlying value is not changed.
*
* _Available since v2.4.0._
*/
function toPayable(address account)
internal
pure
returns (address payable)
{
return address(uint160(account));
}
/**
* @dev Replacement for Solidity's `transfer`: sends `amount` wei to
* `recipient`, forwarding all available gas and reverting on errors.
*
* https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
* of certain opcodes, possibly making contracts go over the 2300 gas limit
* imposed by `transfer`, making them unable to receive funds via
* `transfer`. {sendValue} removes this limitation.
*
* https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
*
* IMPORTANT: because control is transferred to `recipient`, care must be
* taken to not create reentrancy vulnerabilities. Consider using
* {ReentrancyGuard} or the
* https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
*
* _Available since v2.4.0._
*/
function sendValue(address payable recipient, uint256 amount) internal {
require(
address(this).balance >= amount,
"Address: insufficient balance"
);
// solhint-disable-next-line avoid-call-value
(bool success, ) = recipient.call.value(amount).gas(9100)("");
require(
success,
"Address: unable to send value, recipient may have reverted"
);
}
}
// File: contracts/lib/SafeERC20.sol
pragma solidity 0.5.17;
//https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v2.5.0/contracts/token/ERC20/SafeERC20.sol
/**
* @title SafeERC20
* @dev Wrappers around ERC20 operations that throw on failure (when the token
* contract returns false). Tokens that return no value (and instead revert or
* throw on failure) are also supported, non-reverting calls are assumed to be
* successful.
* To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,
* which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
*/
library SafeERC20 {
using Address for address;
function safeTransfer(
IERC20 token,
address to,
uint256 value
) internal {
callOptionalReturn(
token,
abi.encodeWithSelector(token.transfer.selector, to, value)
);
}
function safeTransferFrom(
IERC20 token,
address from,
address to,
uint256 value
) internal {
callOptionalReturn(
token,
abi.encodeWithSelector(token.transferFrom.selector, from, to, value)
);
}
function safeApprove(
IERC20 token,
address spender,
uint256 value
) internal {
// safeApprove should only be called when setting an initial allowance,
// or when resetting it to zero. To increase and decrease it, use
// 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
// solhint-disable-next-line max-line-length
require(
(value == 0) || (token.allowance(address(this), spender) == 0),
"SafeERC20: approve from non-zero to non-zero allowance"
);
callOptionalReturn(
token,
abi.encodeWithSelector(token.approve.selector, spender, value)
);
}
/**
* @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
* on the return value: the return value is optional (but if data is returned, it must not be false).
* @param token The token targeted by the call.
* @param data The call data (encoded using abi.encode or one of its variants).
*/
function callOptionalReturn(IERC20 token, bytes memory data) private {
// We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
// we're implementing it ourselves.
// A Solidity high level call has three parts:
// 1. The target address is checked to verify it contains contract code
// 2. The call itself is made, and success asserted
// 3. The return value is decoded, which in turn checks the size of the returned data.
// solhint-disable-next-line max-line-length
require(address(token).isContract(), "SafeERC20: call to non-contract");
// solhint-disable-next-line avoid-low-level-calls
(bool success, bytes memory returndata) = address(token).call(data);
require(success, "SafeERC20: low-level call failed");
if (returndata.length > 0) {
// Return data is optional
// solhint-disable-next-line max-line-length
require(
abi.decode(returndata, (bool)),
"SafeERC20: ERC20 operation did not succeed"
);
}
}
}
// File: contracts/lib/XNum.sol
pragma solidity 0.5.17;
library XNum {
uint256 public constant BONE = 10**18;
uint256 public constant MIN_BPOW_BASE = 1 wei;
uint256 public constant MAX_BPOW_BASE = (2 * BONE) - 1 wei;
uint256 public constant BPOW_PRECISION = BONE / 10**10;
function btoi(uint256 a) internal pure returns (uint256) {
return a / BONE;
}
function bfloor(uint256 a) internal pure returns (uint256) {
return btoi(a) * BONE;
}
function badd(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "ERR_ADD_OVERFLOW");
return c;
}
function bsub(uint256 a, uint256 b) internal pure returns (uint256) {
(uint256 c, bool flag) = bsubSign(a, b);
require(!flag, "ERR_SUB_UNDERFLOW");
return c;
}
function bsubSign(uint256 a, uint256 b)
internal
pure
returns (uint256, bool)
{
if (a >= b) {
return (a - b, false);
} else {
return (b - a, true);
}
}
function bmul(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c0 = a * b;
require(a == 0 || c0 / a == b, "ERR_MUL_OVERFLOW");
uint256 c1 = c0 + (BONE / 2);
require(c1 >= c0, "ERR_MUL_OVERFLOW");
uint256 c2 = c1 / BONE;
return c2;
}
function bdiv(uint256 a, uint256 b) internal pure returns (uint256) {
require(b != 0, "ERR_DIV_ZERO");
uint256 c0 = a * BONE;
require(a == 0 || c0 / a == BONE, "ERR_DIV_INTERNAL"); // bmul overflow
uint256 c1 = c0 + (b / 2);
require(c1 >= c0, "ERR_DIV_INTERNAL"); // badd require
uint256 c2 = c1 / b;
return c2;
}
// DSMath.wpow
function bpowi(uint256 a, uint256 n) internal pure returns (uint256) {
uint256 z = n % 2 != 0 ? a : BONE;
for (n /= 2; n != 0; n /= 2) {
a = bmul(a, a);
if (n % 2 != 0) {
z = bmul(z, a);
}
}
return z;
}
// Compute b^(e.w) by splitting it into (b^e)*(b^0.w).
// Use `bpowi` for `b^e` and `bpowK` for k iterations
// of approximation of b^0.w
function bpow(uint256 base, uint256 exp) internal pure returns (uint256) {
require(base >= MIN_BPOW_BASE, "ERR_BPOW_BASE_TOO_LOW");
require(base <= MAX_BPOW_BASE, "ERR_BPOW_BASE_TOO_HIGH");
uint256 whole = bfloor(exp);
uint256 remain = bsub(exp, whole);
uint256 wholePow = bpowi(base, btoi(whole));
if (remain == 0) {
return wholePow;
}
uint256 partialResult = bpowApprox(base, remain, BPOW_PRECISION);
return bmul(wholePow, partialResult);
}
function bpowApprox(
uint256 base,
uint256 exp,
uint256 precision
) internal pure returns (uint256) {
// term 0:
uint256 a = exp;
(uint256 x, bool xneg) = bsubSign(base, BONE);
uint256 term = BONE;
uint256 sum = term;
bool negative = false;
// term(k) = numer / denom
// = (product(a - i + 1, i=1-->k) * x^k) / (k!)
// each iteration, multiply previous term by (a-(k-1)) * x / k
// continue until term is less than precision
for (uint256 i = 1; term >= precision; i++) {
uint256 bigK = i * BONE;
(uint256 c, bool cneg) = bsubSign(a, bsub(bigK, BONE));
term = bmul(term, bmul(c, x));
term = bdiv(term, bigK);
if (term == 0) break;
if (xneg) negative = !negative;
if (cneg) negative = !negative;
if (negative) {
sum = bsub(sum, term);
} else {
sum = badd(sum, term);
}
}
return sum;
}
}
// File: contracts/XConfig.sol
pragma solidity 0.5.17;
/**
1. SAFU is a multi-sig account
2. SAFU is the core of XConfig contract instance
3. DEV firstly deploys XConfig contract, then setups the xconfig.core and xconfig.safu to SAFU with setSAFU() and setCore()
*/
contract XConfig is XConst {
using XNum for uint256;
using Address for address;
using SafeERC20 for IERC20;
address private core;
// Secure Asset Fund for Users(SAFU) address
address private safu;
uint256 public SAFU_FEE = (5 * BONE) / 10000; // 0.05%
// Swap Proxy Address
address private swapProxy;
// ETH and WETH address
address public constant ETH_ADDR =
address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);
address public weth;
// pool sigs for pool deduplication
// key: keccak256(tokens[i], norms[i]), value: pool_address
mapping(bytes32 => address) public poolSigs;
uint256 public poolSigCount;
// empty pool: if XPT totalSupply <= MIN_EFFECTIVE_XPT
uint256 public minEffeciveXPT = 10**14; //0.0001 XPT
uint256 public maxExitFee = BONE / 1000; // 0.1%
event INIT_SAFU(address indexed addr);
event SET_CORE(address indexed core, address indexed coreNew);
event SET_SAFU(address indexed safu, address indexed safuNew);
event SET_SAFU_FEE(uint256 indexed fee, uint256 indexed feeNew);
event SET_PROXY(address indexed proxy, address indexed proxyNew);
event ADD_POOL_SIG(
address indexed caller,
address indexed pool,
bytes32 sig
);
event RM_POOL_SIG(
address indexed caller,
address indexed pool,
bytes32 sig
);
event ADD_FARM_POOL(address indexed pool);
event RM_FARM_POOL(address indexed pool);
event SET_MFXPT(uint256 amount);
event COLLECT(address indexed token, uint256 amount);
modifier onlyCore() {
require(msg.sender == core, "ERR_CORE_AUTH");
_;
}
constructor(address _weth) public {
require(_weth != address(0), "ERR_ZERO_ADDR");
weth = _weth;
core = msg.sender;
safu = address(this);
emit INIT_SAFU(address(this));
}
function getCore() external view returns (address) {
return core;
}
function getSAFU() external view returns (address) {
return safu;
}
function getMaxExitFee() external view returns (uint256) {
return maxExitFee;
}
function getSafuFee() external view returns (uint256) {
return SAFU_FEE;
}
function getSwapProxy() external view returns (address) {
return swapProxy;
}
/**
* pool deduplication
* @dev check pool existence which has the same tokens(sorted by address) and weights
* the denorms will allways between [10**18, 50 * 10**18]
* @notice if pool is address(0), means not created yet
* @return pool exists and pool sig
*/
function dedupPool(address[] calldata tokens, uint256[] calldata denorms)
external
returns (bool exist, bytes32 sig)
{
require(msg.sender == swapProxy, "ERR_NOT_SWAPPROXY");
require(tokens.length == denorms.length, "ERR_LENGTH_MISMATCH");
require(tokens.length >= MIN_BOUND_TOKENS, "ERR_MIN_TOKENS");
require(tokens.length <= MAX_BOUND_TOKENS, "ERR_MAX_TOKENS");
uint256 totalWeight = 0;
address[] memory finalTokens = new address[](tokens.length);
for (uint8 i = 0; i < tokens.length; i++) {
if (i > 0) {
//token address must bt sorted
require(tokens[i] > tokens[i - 1], "ERR_TOKENS_NOT_SORTED");
}
finalTokens[i] = tokens[i];
if (tokens[i] == ETH_ADDR) {
finalTokens[i] = weth;
}
totalWeight = totalWeight.badd(denorms[i]);
}
//pool sig generated
bytes memory poolInfo;
for (uint8 i = 0; i < finalTokens.length; i++) {
//normalized weight (multiplied by 100)
uint256 nWeight = denorms[i].bmul(100).bdiv(totalWeight);
poolInfo = abi.encodePacked(poolInfo, finalTokens[i], nWeight);
}
sig = keccak256(poolInfo);
//check empty pool
address pool = poolSigs[sig];
if (pool != address(0)) {
IERC20 TP = IERC20(pool);
if (TP.totalSupply() > minEffeciveXPT) {
return (true, sig);
} else {
//remove sig
removePoolSig(sig);
}
}
exist = false;
}
// add pool's sig
// only allow called by swapProxy
function addPoolSig(bytes32 sig, address pool) external {
require(msg.sender == swapProxy, "ERR_NOT_SWAPPROXY");
require(pool != address(0), "ERR_ZERO_ADDR");
require(sig != 0, "ERR_NOT_SIG");
if (poolSigs[sig] == address(0)) {
//add new sig
poolSigCount = poolSigCount.badd(1);
}
poolSigs[sig] = pool;
emit ADD_POOL_SIG(msg.sender, pool, sig);
}
// remove pool's sig
function removePoolSig(bytes32 sig) internal {
require(sig != 0, "ERR_NOT_SIG");
if (poolSigs[sig] != address(0)) {
emit RM_POOL_SIG(msg.sender, poolSigs[sig], sig);
delete poolSigs[sig];
poolSigCount = poolSigCount.bsub(1);
}
}
// manually batch update poolSig, called by core
function updatePoolSigs(bytes32[] calldata sigs, address[] calldata pools)
external
onlyCore
{
require(sigs.length == pools.length, "ERR_LENGTH_MISMATCH");
require(pools.length > 0 && pools.length <= 30, "ERR_BATCH_COUNT");
for (uint8 i = 0; i < sigs.length; i++) {
bytes32 sig = sigs[i];
address pool = pools[i];
require(sig != 0, "ERR_NOT_SIG");
//remove
if (pool == address(0)) {
removePoolSig(sig);
continue;
}
//update
if (poolSigs[sig] != address(0)) {
//over write
poolSigs[sig] = pool;
} else {
//add new
poolSigs[sig] = pool;
poolSigCount = poolSigCount.badd(1);
emit ADD_POOL_SIG(msg.sender, pool, sig);
}
}
}
function setCore(address _core) external onlyCore {
require(_core != address(0), "ERR_ZERO_ADDR");
emit SET_CORE(core, _core);
core = _core;
}
function setSAFU(address _safu) external onlyCore {
require(_safu != address(0), "ERR_ZERO_ADDR");
emit SET_SAFU(safu, _safu);
safu = _safu;
}
function setMaxExitFee(uint256 _fee) external onlyCore {
require(_fee <= (BONE / 10), "INVALID_EXIT_FEE");
maxExitFee = _fee;
}
function setSafuFee(uint256 _fee) external onlyCore {
require(_fee <= (BONE / 10), "INVALID_SAFU_FEE");
emit SET_SAFU_FEE(SAFU_FEE, _fee);
SAFU_FEE = _fee;
}
function setMinEffeciveXPT(uint256 _mfxpt) external onlyCore {
minEffeciveXPT = _mfxpt;
emit SET_MFXPT(_mfxpt);
}
function setSwapProxy(address _proxy) external onlyCore {
require(_proxy != address(0), "ERR_ZERO_ADDR");
emit SET_PROXY(swapProxy, _proxy);
swapProxy = _proxy;
}
// update SAFU address and SAFE_FEE to pools
function updateSafu(address[] calldata pools) external onlyCore {
require(pools.length > 0 && pools.length <= 30, "ERR_BATCH_COUNT");
for (uint8 i = 0; i < pools.length; i++) {
require(Address.isContract(pools[i]), "ERR_NOT_CONTRACT");
IXPool pool = IXPool(pools[i]);
pool.updateSafu(safu, SAFU_FEE);
}
}
// update isFarmPool status to pools
function updateFarm(address[] calldata pools, bool isFarm)
external
onlyCore
{
require(pools.length > 0 && pools.length <= 30, "ERR_BATCH_COUNT");
for (uint8 i = 0; i < pools.length; i++) {
require(Address.isContract(pools[i]), "ERR_NOT_CONTRACT");
IXPool pool = IXPool(pools[i]);
pool.updateFarm(isFarm);
if (isFarm) {
emit ADD_FARM_POOL(pools[i]);
} else {
emit RM_FARM_POOL(pools[i]);
}
}
}
// collect any tokens in this contract to safu
function collect(address token) external onlyCore {
IERC20 TI = IERC20(token);
uint256 collected = TI.balanceOf(address(this));
TI.safeTransfer(safu, collected);
emit COLLECT(token, collected);
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_weth","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"ADD_FARM_POOL","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bytes32","name":"sig","type":"bytes32"}],"name":"ADD_POOL_SIG","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"COLLECT","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"addr","type":"address"}],"name":"INIT_SAFU","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pool","type":"address"}],"name":"RM_FARM_POOL","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"pool","type":"address"},{"indexed":false,"internalType":"bytes32","name":"sig","type":"bytes32"}],"name":"RM_POOL_SIG","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"core","type":"address"},{"indexed":true,"internalType":"address","name":"coreNew","type":"address"}],"name":"SET_CORE","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SET_MFXPT","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"proxy","type":"address"},{"indexed":true,"internalType":"address","name":"proxyNew","type":"address"}],"name":"SET_PROXY","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"safu","type":"address"},{"indexed":true,"internalType":"address","name":"safuNew","type":"address"}],"name":"SET_SAFU","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"fee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"feeNew","type":"uint256"}],"name":"SET_SAFU_FEE","type":"event"},{"constant":true,"inputs":[],"name":"BONE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ETH_ADDR","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"EXIT_ZERO_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"INIT_POOL_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_BOUND_TOKENS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_IN_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_OUT_RATIO","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOTAL_WEIGHT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MAX_WEIGHT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_BALANCE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_BOUND_TOKENS","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_POOL_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_WEIGHT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"SAFU_FEE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32","name":"sig","type":"bytes32"},{"internalType":"address","name":"pool","type":"address"}],"name":"addPoolSig","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"collect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"tokens","type":"address[]"},{"internalType":"uint256[]","name":"denorms","type":"uint256[]"}],"name":"dedupPool","outputs":[{"internalType":"bool","name":"exist","type":"bool"},{"internalType":"bytes32","name":"sig","type":"bytes32"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCore","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMaxExitFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSAFU","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSafuFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getSwapProxy","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxExitFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minEffeciveXPT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"poolSigCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"poolSigs","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_core","type":"address"}],"name":"setCore","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setMaxExitFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_mfxpt","type":"uint256"}],"name":"setMinEffeciveXPT","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_safu","type":"address"}],"name":"setSAFU","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"setSafuFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_proxy","type":"address"}],"name":"setSwapProxy","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"},{"internalType":"bool","name":"isFarm","type":"bool"}],"name":"updateFarm","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes32[]","name":"sigs","type":"bytes32[]"},{"internalType":"address[]","name":"pools","type":"address[]"}],"name":"updatePoolSigs","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address[]","name":"pools","type":"address[]"}],"name":"updateSafu","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"weth","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"}]Contract Creation Code
60806040526601c6bf52634000600255655af3107a400060075566038d7ea4c6800060085534801561003057600080fd5b506040516121b33803806121b38339818101604052602081101561005357600080fd5b50516001600160a01b0381166100a0576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b600480546001600160a01b03199081166001600160a01b03841617909155600080543390831617815560018054309316831790556040517f28e27a759aa739430ffb3eb49355160102731a1a5104cdaddf5859b2cf6c38049190a2506120a88061010b6000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c80638165376311610125578063b94a5320116100ad578063e4a28a521161007c578063e4a28a5214610249578063ec0930211461064d578063f316616414610655578063ff42517d14610681578063ff9b0c29146106895761021c565b8063b94a532014610617578063c36596a6146102eb578063c84a705c1461061f578063da4fbe52146106455761021c565b806397b63741116100f457806397b637411461051e578063992e2a92146105f7578063adf5f51f146105ff578063b0e0d13614610607578063b7b800a41461060f5761021c565b806381653763146104e957806385ea3742146104f1578063867378c51461050e5780639381cd2b146105165761021c565b80633aac9584116101a85780635437fc7a116101775780635437fc7a1461048557806362846f8c1461048d5780637753f47b14610495578063789176101461049d57806380009630146104c35761021c565b80633aac9584146103b95780633fc8cef3146103d65780634b2e3343146103fa5780634caa2ad3146104685761021c565b806317ab06e1116101ef57806317ab06e1146102735780631e75a30e1461027b578063218b5382146102eb5780632cb2d32f146102f3578063339e6948146103b15761021c565b806306ec16f81461022157806309a3bbe41461024957806310214dfe1461026357806311b42b1e1461026b575b600080fd5b6102476004803603602081101561023757600080fd5b50356001600160a01b03166106a6565b005b6102516107d3565b60408051918252519081900360200190f35b6102516107e0565b6102516107e6565b6102516107eb565b6102476004803603604081101561029157600080fd5b810190602081018135600160201b8111156102ab57600080fd5b8201836020820111156102bd57600080fd5b803590602001918460208302840111600160201b831117156102de57600080fd5b91935091503515156107f3565b610251610a56565b6102476004803603604081101561030957600080fd5b810190602081018135600160201b81111561032357600080fd5b82018360208201111561033557600080fd5b803590602001918460208302840111600160201b8311171561035657600080fd5b919390929091602081019035600160201b81111561037357600080fd5b82018360208201111561038557600080fd5b803590602001918460208302840111600160201b831117156103a657600080fd5b509092509050610a62565b610251610cd1565b610247600480360360208110156103cf57600080fd5b5035610cd7565b6103de610d61565b604080516001600160a01b039092168252519081900360200190f35b6102476004803603602081101561041057600080fd5b810190602081018135600160201b81111561042a57600080fd5b82018360208201111561043c57600080fd5b803590602001918460208302840111600160201b8311171561045d57600080fd5b509092509050610d70565b6102476004803603602081101561047e57600080fd5b5035610f15565b6103de610fe8565b6103de610ff7565b6103de611006565b610247600480360360208110156104b357600080fd5b50356001600160a01b031661101e565b610247600480360360208110156104d957600080fd5b50356001600160a01b0316611114565b610251611208565b6103de6004803603602081101561050757600080fd5b503561120e565b610251611229565b610251611230565b6105dc6004803603604081101561053457600080fd5b810190602081018135600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460208302840111600160201b8311171561058157600080fd5b919390929091602081019035600160201b81111561059e57600080fd5b8201836020820111156105b057600080fd5b803590602001918460208302840111600160201b831117156105d157600080fd5b50909250905061123d565b60408051921515835260208301919091528051918290030190f35b61025161171d565b610251611729565b61025161172f565b610251611734565b610251611739565b6102476004803603602081101561063557600080fd5b50356001600160a01b031661173f565b6103de611835565b610251611844565b6102476004803603604081101561066b57600080fd5b50803590602001356001600160a01b0316611850565b6102516119c8565b6102476004803603602081101561069f57600080fd5b50356119ce565b6000546001600160a01b031633146106f5576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561074057600080fd5b505afa158015610754573d6000803e3d6000fd5b505050506040513d602081101561076a57600080fd5b505160015490915061078f906001600160a01b0384811691168363ffffffff611a7216565b6040805182815290516001600160a01b038516917f8f18e6fd85b5d8dde11ae15efee2cb7fbb8648e6a9a45ca48f86bba51b15071b919081900360200190a2505050565b6802b5e3af16b188000081565b60085481565b600081565b6305f5e10081565b6000546001600160a01b03163314610842576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b81158015906108525750601e8211155b610895576040805162461bcd60e51b815260206004820152600f60248201526e11549497d0905510d217d0d3d55395608a1b604482015290519081900360640190fd5b60005b60ff8116831115610a50576108ca84848360ff168181106108b557fe5b905060200201356001600160a01b0316611ac4565b61090e576040805162461bcd60e51b815260206004820152601060248201526f11549497d393d517d0d3d395149050d560821b604482015290519081900360640190fd5b600084848360ff1681811061091f57fe5b905060200201356001600160a01b03169050806001600160a01b0316631ca22ea5846040518263ffffffff1660e01b81526004018082151515158152602001915050600060405180830381600087803b15801561097b57600080fd5b505af115801561098f573d6000803e3d6000fd5b5050505082156109f25784848360ff168181106109a857fe5b905060200201356001600160a01b03166001600160a01b03167f18fca4cc1df174d0863c5c4a54164275fdba8b8118576f670d7bf76f4becd79160405160405180910390a2610a47565b84848360ff16818110610a0157fe5b905060200201356001600160a01b03166001600160a01b03167fedf2fb6f942bf99106e9c6a811fff36327aa11fc01c1ecdf76d5a2f38d534c0660405160405180910390a25b50600101610898565b50505050565b670de0b6b3a764000081565b6000546001600160a01b03163314610ab1576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b828114610afb576040805162461bcd60e51b815260206004820152601360248201527208aa4a4be988a9c8ea890be9a92a69a82a8869606b1b604482015290519081900360640190fd5b8015801590610b0b5750601e8111155b610b4e576040805162461bcd60e51b815260206004820152600f60248201526e11549497d0905510d217d0d3d55395608a1b604482015290519081900360640190fd5b60005b60ff8116841115610cca57600085858360ff16818110610b6d57fe5b905060200201359050600084848460ff16818110610b8757fe5b905060200201356001600160a01b03169050816000801b1415610bdf576040805162461bcd60e51b815260206004820152600b60248201526a4552525f4e4f545f53494760a81b604482015290519081900360640190fd5b6001600160a01b038116610bfd57610bf682611b00565b5050610cc2565b6000828152600560205260409020546001600160a01b031615610c4657600082815260056020526040902080546001600160a01b0319166001600160a01b038316179055610cbf565b600082815260056020526040902080546001600160a01b0319166001600160a01b038316179055600654610c7b906001611be5565b6006556040805183815290516001600160a01b0383169133917f0c9edbf5ba84d1e14b01ee9d8e014f0f178be48139f5b8e3ade62f57f08dfbbd9181900360200190a35b50505b600101610b51565b5050505050565b60065481565b6000546001600160a01b03163314610d26576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b60078190556040805182815290517f3195aa1ad5347903ddadaa494c56eeb155d2a534bc925908dc7bce7c858bd99e9181900360200190a150565b6004546001600160a01b031681565b6000546001600160a01b03163314610dbf576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b8015801590610dcf5750601e8111155b610e12576040805162461bcd60e51b815260206004820152600f60248201526e11549497d0905510d217d0d3d55395608a1b604482015290519081900360640190fd5b60005b60ff8116821115610f1057610e3283838360ff168181106108b557fe5b610e76576040805162461bcd60e51b815260206004820152601060248201526f11549497d393d517d0d3d395149050d560821b604482015290519081900360640190fd5b600083838360ff16818110610e8757fe5b6001546002546040805163066b34df60e51b81526001600160a01b03938416600482015260248101929092525160209093029490940135169350839263cd669be0925060448082019260009290919082900301818387803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505060019093019250610e15915050565b505050565b6000546001600160a01b03163314610f64576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b67016345785d8a0000811115610fb4576040805162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534146555f46454560801b604482015290519081900360640190fd5b6002546040518291907f273e6984e840d3d07eaeac4cb6d97d66bef1a51fb6bc4cc2b1070779757cad6890600090a3600255565b6001546001600160a01b031690565b6003546001600160a01b031690565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6000546001600160a01b0316331461106d576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b6001600160a01b0381166110b8576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b6001546040516001600160a01b038084169216907fbe25364dd2dd2ef676922ad795c084a0a86af0e709dd01fd54f3dc4cd9de86d990600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611163576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b6001600160a01b0381166111ae576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917e56b56524ccc7cf1d147fdc1b3201b6e5bf8df426ebc07861b3564064d7fc2d91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60025481565b6005602052600090815260409020546001600160a01b031681565b620f424081565b68056bc75e2d6310000081565b60035460009081906001600160a01b03163314611295576040805162461bcd60e51b81526020600482015260116024820152704552525f4e4f545f5357415050524f585960781b604482015290519081900360640190fd5b8483146112df576040805162461bcd60e51b815260206004820152601360248201527208aa4a4be988a9c8ea890be9a92a69a82a8869606b1b604482015290519081900360640190fd5b6002851015611326576040805162461bcd60e51b815260206004820152600e60248201526d4552525f4d494e5f544f4b454e5360901b604482015290519081900360640190fd5b600885111561136d576040805162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b604482015290519081900360640190fd5b60408051868152602080880282010190915260009060609087801561139c578160200160208202803883390190505b50905060005b60ff811688111561154f5760ff8116156114535788886001830360ff168181106113c857fe5b905060200201356001600160a01b03166001600160a01b031689898360ff168181106113f057fe5b905060200201356001600160a01b03166001600160a01b031611611453576040805162461bcd60e51b815260206004820152601560248201527411549497d513d2d15394d7d393d517d4d3d4951151605a1b604482015290519081900360640190fd5b88888260ff1681811061146257fe5b905060200201356001600160a01b0316828260ff168151811061148157fe5b6001600160a01b039092166020928302919091019091015273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee898960ff84168181106114bd57fe5b905060200201356001600160a01b03166001600160a01b0316141561151d5760045482516001600160a01b0390911690839060ff84169081106114fc57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61154587878360ff1681811061152f57fe5b9050602002013584611be590919063ffffffff16565b92506001016113a2565b50606060005b82518160ff16101561165057600061159c8561159060648c8c8760ff1681811061157b57fe5b90506020020135611c3990919063ffffffff16565b9063ffffffff611d0216565b905082848360ff16815181106115ae57fe5b6020026020010151826040516020018084805190602001908083835b602083106115e95780518252601f1990920191602091820191016115ca565b6001836020036101000a038019825116818451168082178552505050505050905001836001600160a01b03166001600160a01b031660601b815260140182815260200193505050506040516020818303038152906040529250508080600101915050611555565b508051602080830191909120600081815260059092526040909120549094506001600160a01b0316801561170b576000819050600754816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116bf57600080fd5b505afa1580156116d3573d6000803e3d6000fd5b505050506040513d60208110156116e957600080fd5b505111156117005750600195506117149350505050565b61170986611b00565b505b60009550505050505b94509492505050565b6704a03ce68d21555681565b60025490565b600881565b600281565b60075481565b6000546001600160a01b0316331461178e576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b6001600160a01b0381166117d9576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b6003546040516001600160a01b038084169216907f40cf3a3e5ead7c479e23dfc4ed02bf3734aadbc60fa490bef7a28091b3a8767590600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6706f05b59d3b2000081565b6003546001600160a01b031633146118a3576040805162461bcd60e51b81526020600482015260116024820152704552525f4e4f545f5357415050524f585960781b604482015290519081900360640190fd5b6001600160a01b0381166118ee576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b8161192e576040805162461bcd60e51b815260206004820152600b60248201526a4552525f4e4f545f53494760a81b604482015290519081900360640190fd5b6000828152600560205260409020546001600160a01b03166119625760065461195e90600163ffffffff611be516565b6006555b60008281526005602090815260409182902080546001600160a01b0319166001600160a01b03851690811790915582518581529251909233927f0c9edbf5ba84d1e14b01ee9d8e014f0f178be48139f5b8e3ade62f57f08dfbbd92918290030190a35050565b60085490565b6000546001600160a01b03163314611a1d576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b67016345785d8a0000811115611a6d576040805162461bcd60e51b815260206004820152601060248201526f494e56414c49445f455849545f46454560801b604482015290519081900360640190fd5b600855565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f10908490611e0a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611af857508115155b949350505050565b80611b40576040805162461bcd60e51b815260206004820152600b60248201526a4552525f4e4f545f53494760a81b604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615611be25760008181526005602090815260409182902054825184815292516001600160a01b039091169233927fe5bb0b961db3612bdacf2026900a737ab034adde73520ea0eaac2dba6c6b623892918290030190a3600081815260056020526040902080546001600160a01b0319169055600654611bde90600163ffffffff611fc216565b6006555b50565b600082820183811015611c32576040805162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015290519081900360640190fd5b9392505050565b6000828202831580611c53575082848281611c5057fe5b04145b611c97576040805162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015290519081900360640190fd5b6706f05b59d3b20000810181811015611cea576040805162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015290519081900360640190fd5b6000670de0b6b3a7640000825b049695505050505050565b600081611d45576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015290519081900360640190fd5b670de0b6b3a76400008302831580611d6d5750670de0b6b3a7640000848281611d6a57fe5b04145b611db1576040805162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015290519081900360640190fd5b60028304810181811015611dff576040805162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015290519081900360640190fd5b6000848281611cf757fe5b611e1c826001600160a01b0316611ac4565b611e6d576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611eab5780518252601f199092019160209182019101611e8c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f0d576040519150601f19603f3d011682016040523d82523d6000602084013e611f12565b606091505b509150915081611f69576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610a5057808060200190516020811015611f8557600080fd5b5051610a505760405162461bcd60e51b815260040180806020018281038252602a81526020018061204a602a913960400191505060405180910390fd5b6000806000611fd18585612024565b91509150801561201c576040805162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015290519081900360640190fd5b509392505050565b60008082841061203a5750508082036000612042565b505081810360015b925092905056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158207417a3f608928a5fc5f33b2b2e647f4935dabd58de2d99ecb3a420f98fd852b764736f6c63430005110032000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061021c5760003560e01c80638165376311610125578063b94a5320116100ad578063e4a28a521161007c578063e4a28a5214610249578063ec0930211461064d578063f316616414610655578063ff42517d14610681578063ff9b0c29146106895761021c565b8063b94a532014610617578063c36596a6146102eb578063c84a705c1461061f578063da4fbe52146106455761021c565b806397b63741116100f457806397b637411461051e578063992e2a92146105f7578063adf5f51f146105ff578063b0e0d13614610607578063b7b800a41461060f5761021c565b806381653763146104e957806385ea3742146104f1578063867378c51461050e5780639381cd2b146105165761021c565b80633aac9584116101a85780635437fc7a116101775780635437fc7a1461048557806362846f8c1461048d5780637753f47b14610495578063789176101461049d57806380009630146104c35761021c565b80633aac9584146103b95780633fc8cef3146103d65780634b2e3343146103fa5780634caa2ad3146104685761021c565b806317ab06e1116101ef57806317ab06e1146102735780631e75a30e1461027b578063218b5382146102eb5780632cb2d32f146102f3578063339e6948146103b15761021c565b806306ec16f81461022157806309a3bbe41461024957806310214dfe1461026357806311b42b1e1461026b575b600080fd5b6102476004803603602081101561023757600080fd5b50356001600160a01b03166106a6565b005b6102516107d3565b60408051918252519081900360200190f35b6102516107e0565b6102516107e6565b6102516107eb565b6102476004803603604081101561029157600080fd5b810190602081018135600160201b8111156102ab57600080fd5b8201836020820111156102bd57600080fd5b803590602001918460208302840111600160201b831117156102de57600080fd5b91935091503515156107f3565b610251610a56565b6102476004803603604081101561030957600080fd5b810190602081018135600160201b81111561032357600080fd5b82018360208201111561033557600080fd5b803590602001918460208302840111600160201b8311171561035657600080fd5b919390929091602081019035600160201b81111561037357600080fd5b82018360208201111561038557600080fd5b803590602001918460208302840111600160201b831117156103a657600080fd5b509092509050610a62565b610251610cd1565b610247600480360360208110156103cf57600080fd5b5035610cd7565b6103de610d61565b604080516001600160a01b039092168252519081900360200190f35b6102476004803603602081101561041057600080fd5b810190602081018135600160201b81111561042a57600080fd5b82018360208201111561043c57600080fd5b803590602001918460208302840111600160201b8311171561045d57600080fd5b509092509050610d70565b6102476004803603602081101561047e57600080fd5b5035610f15565b6103de610fe8565b6103de610ff7565b6103de611006565b610247600480360360208110156104b357600080fd5b50356001600160a01b031661101e565b610247600480360360208110156104d957600080fd5b50356001600160a01b0316611114565b610251611208565b6103de6004803603602081101561050757600080fd5b503561120e565b610251611229565b610251611230565b6105dc6004803603604081101561053457600080fd5b810190602081018135600160201b81111561054e57600080fd5b82018360208201111561056057600080fd5b803590602001918460208302840111600160201b8311171561058157600080fd5b919390929091602081019035600160201b81111561059e57600080fd5b8201836020820111156105b057600080fd5b803590602001918460208302840111600160201b831117156105d157600080fd5b50909250905061123d565b60408051921515835260208301919091528051918290030190f35b61025161171d565b610251611729565b61025161172f565b610251611734565b610251611739565b6102476004803603602081101561063557600080fd5b50356001600160a01b031661173f565b6103de611835565b610251611844565b6102476004803603604081101561066b57600080fd5b50803590602001356001600160a01b0316611850565b6102516119c8565b6102476004803603602081101561069f57600080fd5b50356119ce565b6000546001600160a01b031633146106f5576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b15801561074057600080fd5b505afa158015610754573d6000803e3d6000fd5b505050506040513d602081101561076a57600080fd5b505160015490915061078f906001600160a01b0384811691168363ffffffff611a7216565b6040805182815290516001600160a01b038516917f8f18e6fd85b5d8dde11ae15efee2cb7fbb8648e6a9a45ca48f86bba51b15071b919081900360200190a2505050565b6802b5e3af16b188000081565b60085481565b600081565b6305f5e10081565b6000546001600160a01b03163314610842576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b81158015906108525750601e8211155b610895576040805162461bcd60e51b815260206004820152600f60248201526e11549497d0905510d217d0d3d55395608a1b604482015290519081900360640190fd5b60005b60ff8116831115610a50576108ca84848360ff168181106108b557fe5b905060200201356001600160a01b0316611ac4565b61090e576040805162461bcd60e51b815260206004820152601060248201526f11549497d393d517d0d3d395149050d560821b604482015290519081900360640190fd5b600084848360ff1681811061091f57fe5b905060200201356001600160a01b03169050806001600160a01b0316631ca22ea5846040518263ffffffff1660e01b81526004018082151515158152602001915050600060405180830381600087803b15801561097b57600080fd5b505af115801561098f573d6000803e3d6000fd5b5050505082156109f25784848360ff168181106109a857fe5b905060200201356001600160a01b03166001600160a01b03167f18fca4cc1df174d0863c5c4a54164275fdba8b8118576f670d7bf76f4becd79160405160405180910390a2610a47565b84848360ff16818110610a0157fe5b905060200201356001600160a01b03166001600160a01b03167fedf2fb6f942bf99106e9c6a811fff36327aa11fc01c1ecdf76d5a2f38d534c0660405160405180910390a25b50600101610898565b50505050565b670de0b6b3a764000081565b6000546001600160a01b03163314610ab1576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b828114610afb576040805162461bcd60e51b815260206004820152601360248201527208aa4a4be988a9c8ea890be9a92a69a82a8869606b1b604482015290519081900360640190fd5b8015801590610b0b5750601e8111155b610b4e576040805162461bcd60e51b815260206004820152600f60248201526e11549497d0905510d217d0d3d55395608a1b604482015290519081900360640190fd5b60005b60ff8116841115610cca57600085858360ff16818110610b6d57fe5b905060200201359050600084848460ff16818110610b8757fe5b905060200201356001600160a01b03169050816000801b1415610bdf576040805162461bcd60e51b815260206004820152600b60248201526a4552525f4e4f545f53494760a81b604482015290519081900360640190fd5b6001600160a01b038116610bfd57610bf682611b00565b5050610cc2565b6000828152600560205260409020546001600160a01b031615610c4657600082815260056020526040902080546001600160a01b0319166001600160a01b038316179055610cbf565b600082815260056020526040902080546001600160a01b0319166001600160a01b038316179055600654610c7b906001611be5565b6006556040805183815290516001600160a01b0383169133917f0c9edbf5ba84d1e14b01ee9d8e014f0f178be48139f5b8e3ade62f57f08dfbbd9181900360200190a35b50505b600101610b51565b5050505050565b60065481565b6000546001600160a01b03163314610d26576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b60078190556040805182815290517f3195aa1ad5347903ddadaa494c56eeb155d2a534bc925908dc7bce7c858bd99e9181900360200190a150565b6004546001600160a01b031681565b6000546001600160a01b03163314610dbf576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b8015801590610dcf5750601e8111155b610e12576040805162461bcd60e51b815260206004820152600f60248201526e11549497d0905510d217d0d3d55395608a1b604482015290519081900360640190fd5b60005b60ff8116821115610f1057610e3283838360ff168181106108b557fe5b610e76576040805162461bcd60e51b815260206004820152601060248201526f11549497d393d517d0d3d395149050d560821b604482015290519081900360640190fd5b600083838360ff16818110610e8757fe5b6001546002546040805163066b34df60e51b81526001600160a01b03938416600482015260248101929092525160209093029490940135169350839263cd669be0925060448082019260009290919082900301818387803b158015610eeb57600080fd5b505af1158015610eff573d6000803e3d6000fd5b505060019093019250610e15915050565b505050565b6000546001600160a01b03163314610f64576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b67016345785d8a0000811115610fb4576040805162461bcd60e51b815260206004820152601060248201526f494e56414c49445f534146555f46454560801b604482015290519081900360640190fd5b6002546040518291907f273e6984e840d3d07eaeac4cb6d97d66bef1a51fb6bc4cc2b1070779757cad6890600090a3600255565b6001546001600160a01b031690565b6003546001600160a01b031690565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee81565b6000546001600160a01b0316331461106d576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b6001600160a01b0381166110b8576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b6001546040516001600160a01b038084169216907fbe25364dd2dd2ef676922ad795c084a0a86af0e709dd01fd54f3dc4cd9de86d990600090a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611163576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b6001600160a01b0381166111ae576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b600080546040516001600160a01b03808516939216917e56b56524ccc7cf1d147fdc1b3201b6e5bf8df426ebc07861b3564064d7fc2d91a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60025481565b6005602052600090815260409020546001600160a01b031681565b620f424081565b68056bc75e2d6310000081565b60035460009081906001600160a01b03163314611295576040805162461bcd60e51b81526020600482015260116024820152704552525f4e4f545f5357415050524f585960781b604482015290519081900360640190fd5b8483146112df576040805162461bcd60e51b815260206004820152601360248201527208aa4a4be988a9c8ea890be9a92a69a82a8869606b1b604482015290519081900360640190fd5b6002851015611326576040805162461bcd60e51b815260206004820152600e60248201526d4552525f4d494e5f544f4b454e5360901b604482015290519081900360640190fd5b600885111561136d576040805162461bcd60e51b815260206004820152600e60248201526d4552525f4d41585f544f4b454e5360901b604482015290519081900360640190fd5b60408051868152602080880282010190915260009060609087801561139c578160200160208202803883390190505b50905060005b60ff811688111561154f5760ff8116156114535788886001830360ff168181106113c857fe5b905060200201356001600160a01b03166001600160a01b031689898360ff168181106113f057fe5b905060200201356001600160a01b03166001600160a01b031611611453576040805162461bcd60e51b815260206004820152601560248201527411549497d513d2d15394d7d393d517d4d3d4951151605a1b604482015290519081900360640190fd5b88888260ff1681811061146257fe5b905060200201356001600160a01b0316828260ff168151811061148157fe5b6001600160a01b039092166020928302919091019091015273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee898960ff84168181106114bd57fe5b905060200201356001600160a01b03166001600160a01b0316141561151d5760045482516001600160a01b0390911690839060ff84169081106114fc57fe5b60200260200101906001600160a01b031690816001600160a01b0316815250505b61154587878360ff1681811061152f57fe5b9050602002013584611be590919063ffffffff16565b92506001016113a2565b50606060005b82518160ff16101561165057600061159c8561159060648c8c8760ff1681811061157b57fe5b90506020020135611c3990919063ffffffff16565b9063ffffffff611d0216565b905082848360ff16815181106115ae57fe5b6020026020010151826040516020018084805190602001908083835b602083106115e95780518252601f1990920191602091820191016115ca565b6001836020036101000a038019825116818451168082178552505050505050905001836001600160a01b03166001600160a01b031660601b815260140182815260200193505050506040516020818303038152906040529250508080600101915050611555565b508051602080830191909120600081815260059092526040909120549094506001600160a01b0316801561170b576000819050600754816001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b1580156116bf57600080fd5b505afa1580156116d3573d6000803e3d6000fd5b505050506040513d60208110156116e957600080fd5b505111156117005750600195506117149350505050565b61170986611b00565b505b60009550505050505b94509492505050565b6704a03ce68d21555681565b60025490565b600881565b600281565b60075481565b6000546001600160a01b0316331461178e576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b6001600160a01b0381166117d9576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b6003546040516001600160a01b038084169216907f40cf3a3e5ead7c479e23dfc4ed02bf3734aadbc60fa490bef7a28091b3a8767590600090a3600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b6706f05b59d3b2000081565b6003546001600160a01b031633146118a3576040805162461bcd60e51b81526020600482015260116024820152704552525f4e4f545f5357415050524f585960781b604482015290519081900360640190fd5b6001600160a01b0381166118ee576040805162461bcd60e51b815260206004820152600d60248201526c22a9292fad22a927afa0a2222960991b604482015290519081900360640190fd5b8161192e576040805162461bcd60e51b815260206004820152600b60248201526a4552525f4e4f545f53494760a81b604482015290519081900360640190fd5b6000828152600560205260409020546001600160a01b03166119625760065461195e90600163ffffffff611be516565b6006555b60008281526005602090815260409182902080546001600160a01b0319166001600160a01b03851690811790915582518581529251909233927f0c9edbf5ba84d1e14b01ee9d8e014f0f178be48139f5b8e3ade62f57f08dfbbd92918290030190a35050565b60085490565b6000546001600160a01b03163314611a1d576040805162461bcd60e51b815260206004820152600d60248201526c08aa4a4be869ea48abe82aaa89609b1b604482015290519081900360640190fd5b67016345785d8a0000811115611a6d576040805162461bcd60e51b815260206004820152601060248201526f494e56414c49445f455849545f46454560801b604482015290519081900360640190fd5b600855565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610f10908490611e0a565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590611af857508115155b949350505050565b80611b40576040805162461bcd60e51b815260206004820152600b60248201526a4552525f4e4f545f53494760a81b604482015290519081900360640190fd5b6000818152600560205260409020546001600160a01b031615611be25760008181526005602090815260409182902054825184815292516001600160a01b039091169233927fe5bb0b961db3612bdacf2026900a737ab034adde73520ea0eaac2dba6c6b623892918290030190a3600081815260056020526040902080546001600160a01b0319169055600654611bde90600163ffffffff611fc216565b6006555b50565b600082820183811015611c32576040805162461bcd60e51b815260206004820152601060248201526f4552525f4144445f4f564552464c4f5760801b604482015290519081900360640190fd5b9392505050565b6000828202831580611c53575082848281611c5057fe5b04145b611c97576040805162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015290519081900360640190fd5b6706f05b59d3b20000810181811015611cea576040805162461bcd60e51b815260206004820152601060248201526f4552525f4d554c5f4f564552464c4f5760801b604482015290519081900360640190fd5b6000670de0b6b3a7640000825b049695505050505050565b600081611d45576040805162461bcd60e51b815260206004820152600c60248201526b4552525f4449565f5a45524f60a01b604482015290519081900360640190fd5b670de0b6b3a76400008302831580611d6d5750670de0b6b3a7640000848281611d6a57fe5b04145b611db1576040805162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015290519081900360640190fd5b60028304810181811015611dff576040805162461bcd60e51b815260206004820152601060248201526f11549497d1125597d25395115493905360821b604482015290519081900360640190fd5b6000848281611cf757fe5b611e1c826001600160a01b0316611ac4565b611e6d576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611eab5780518252601f199092019160209182019101611e8c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611f0d576040519150601f19603f3d011682016040523d82523d6000602084013e611f12565b606091505b509150915081611f69576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610a5057808060200190516020811015611f8557600080fd5b5051610a505760405162461bcd60e51b815260040180806020018281038252602a81526020018061204a602a913960400191505060405180910390fd5b6000806000611fd18585612024565b91509150801561201c576040805162461bcd60e51b81526020600482015260116024820152704552525f5355425f554e444552464c4f5760781b604482015290519081900360640190fd5b509392505050565b60008082841061203a5750508082036000612042565b505081810360015b925092905056fe5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158207417a3f608928a5fc5f33b2b2e647f4935dabd58de2d99ecb3a420f98fd852b764736f6c63430005110032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
-----Decoded View---------------
Arg [0] : _weth (address): 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
Deployed Bytecode Sourcemap
17081:8744:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17081:8744:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25582:240;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25582:240:0;-1:-1:-1;;;;;25582:240:0;;:::i;:::-;;384:52;;;:::i;:::-;;;;;;;;;;;;;;;;17909:39;;;:::i;233:41::-;;;:::i;567:47::-;;;:::i;24956:566::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24956:566:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24956:566:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24956:566:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;24956:566:0;;-1:-1:-1;24956:566:0;-1:-1:-1;24956:566:0;;;;:::i;283:41::-;;;:::i;22449:955::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22449:955:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22449:955:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22449:955:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;22449:955:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22449:955:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22449:955:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;22449:955:0;;-1:-1:-1;22449:955:0;-1:-1:-1;22449:955:0;:::i;17755:27::-;;;:::i;24131:136::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24131:136:0;;:::i;17571:19::-;;;:::i;:::-;;;;-1:-1:-1;;;;;17571:19:0;;;;;;;;;;;;;;24527:379;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;24527:379:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24527:379:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24527:379:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;24527:379:0;;-1:-1:-1;24527:379:0;-1:-1:-1;24527:379:0;:::i;23934:189::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23934:189:0;;:::i;19145:81::-;;;:::i;19431:91::-;;;:::i;17469:95::-;;;:::i;23594:174::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23594:174:0;-1:-1:-1;;;;;23594:174:0;;:::i;23412:::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23412:174:0;-1:-1:-1;;;;;23412:174:0;;:::i;17317:44::-;;;:::i;17705:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17705:43:0;;:::i;489:::-;;;:::i;623:53::-;;;:::i;19831:1707::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19831:1707:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;19831:1707:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19831:1707:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;19831:1707:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;19831:1707:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;19831:1707:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;19831:1707:0;;-1:-1:-1;19831:1707:0;-1:-1:-1;19831:1707:0;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;739:58;;;:::i;19335:88::-;;;:::i;180:44::-;;;:::i;129:::-;;;:::i;17849:38::-;;;:::i;24275:194::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24275:194:0;-1:-1:-1;;;;;24275:194:0;;:::i;19056:81::-;;;:::i;685:47::-;;;:::i;21608:444::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21608:444:0;;;;;;-1:-1:-1;;;;;21608:444:0;;:::i;19234:93::-;;;:::i;23776:150::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23776:150:0;;:::i;25582:240::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;25701:27;;;-1:-1:-1;;;25701:27:0;;25722:4;25701:27;;;;;;25662:5;;25643:9;;-1:-1:-1;;;;;25701:12:0;;;;;:27;;;;;;;;;;;;;;:12;:27;;;5:2:-1;;;;30:1;27;20:12;5:2;25701:27:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25701:27:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;25701:27:0;25755:4;;25701:27;;-1:-1:-1;25739:32:0;;-1:-1:-1;;;;;25739:15:0;;;;25755:4;25701:27;25739:32;:15;:32;:::i;:::-;25789:25;;;;;;;;-1:-1:-1;;;;;25789:25:0;;;;;;;;;;;;;18811:1;;25582:240;:::o;384:52::-;427:9;384:52;:::o;17909:39::-;;;;:::o;233:41::-;273:1;233:41;:::o;567:47::-;609:5;567:47;:::o;24956:566::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;25075:16;;;;;:38;;-1:-1:-1;25111:2:0;25095:18;;;25075:38;25067:66;;;;;-1:-1:-1;;;25067:66:0;;;;;;;;;;;;-1:-1:-1;;;25067:66:0;;;;;;;;;;;;;;;25151:7;25146:369;25164:16;;;;-1:-1:-1;25146:369:0;;;25210:28;25229:5;;25235:1;25229:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;25229:8:0;25210:18;:28::i;:::-;25202:57;;;;;-1:-1:-1;;;25202:57:0;;;;;;;;;;;;-1:-1:-1;;;25202:57:0;;;;;;;;;;;;;;;25276:11;25297:5;;25303:1;25297:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;25297:8:0;25276:30;;25321:4;-1:-1:-1;;;;;25321:15:0;;25337:6;25321:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25321:23:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;25321:23:0;;;;25365:6;25361:143;;;25411:5;;25417:1;25411:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;25411:8:0;-1:-1:-1;;;;;25397:23:0;;;;;;;;;;;25361:143;;;25479:5;;25485:1;25479:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;25479:8:0;-1:-1:-1;;;;;25466:22:0;;;;;;;;;;;25361:143;-1:-1:-1;25182:3:0;;25146:369;;;;24956:566;;;:::o;283:41::-;114:6;283:41;:::o;22449:955::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;22584:27;;;22576:59;;;;;-1:-1:-1;;;22576:59:0;;;;;;;;;;;;-1:-1:-1;;;22576:59:0;;;;;;;;;;;;;;;22654:16;;;;;:38;;-1:-1:-1;22690:2:0;22674:18;;;22654:38;22646:66;;;;;-1:-1:-1;;;22646:66:0;;;;;;;;;;;;-1:-1:-1;;;22646:66:0;;;;;;;;;;;;;;;22730:7;22725:672;22743:15;;;;-1:-1:-1;22725:672:0;;;22780:11;22794:4;;22799:1;22794:7;;;;;;;;;;;;;;;22780:21;;22816:12;22831:5;;22837:1;22831:8;;;;;;;;;;;;;;;-1:-1:-1;;;;;22831:8:0;22816:23;;22862:3;22869:1;22862:8;;;;22854:32;;;;;-1:-1:-1;;;22854:32:0;;;;;;;;;;;;-1:-1:-1;;;22854:32:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;22929:18:0;;22925:104;;22968:18;22982:3;22968:13;:18::i;:::-;23005:8;;;;22925:104;23096:1;23071:13;;;:8;:13;;;;;;-1:-1:-1;;;;;23071:13:0;:27;23067:319;;23149:13;;;;:8;:13;;;;;:20;;-1:-1:-1;;;;;;23149:20:0;-1:-1:-1;;;;;23149:20:0;;;;;23067:319;;;23237:13;;;;:8;:13;;;;;:20;;-1:-1:-1;;;;;;23237:20:0;-1:-1:-1;;;;;23237:20:0;;;;;23291:12;;:20;;-1:-1:-1;23291:17:0;:20::i;:::-;23276:12;:35;23335;;;;;;;;-1:-1:-1;;;;;23335:35:0;;;23348:10;;23335:35;;;;;;;;;23067:319;22725:672;;;22760:3;;22725:672;;;;22449:955;;;;:::o;17755:27::-;;;;:::o;24131:136::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;24203:14;:23;;;24242:17;;;;;;;;;;;;;;;;;24131:136;:::o;17571:19::-;;;-1:-1:-1;;;;;17571:19:0;;:::o;24527:379::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;24610:16;;;;;:38;;-1:-1:-1;24646:2:0;24630:18;;;24610:38;24602:66;;;;;-1:-1:-1;;;24602:66:0;;;;;;;;;;;;-1:-1:-1;;;24602:66:0;;;;;;;;;;;;;;;24686:7;24681:218;24699:16;;;;-1:-1:-1;24681:218:0;;;24745:28;24764:5;;24770:1;24764:8;;;;;;;;24745:28;24737:57;;;;;-1:-1:-1;;;24737:57:0;;;;;;;;;;;;-1:-1:-1;;;24737:57:0;;;;;;;;;;;;;;;24811:11;24832:5;;24838:1;24832:8;;;;;;;;;24872:4;;24878:8;;24856:31;;;-1:-1:-1;;;24856:31:0;;-1:-1:-1;;;;;24872:4:0;;;24856:31;;;;;;;;;;;;24832:8;;;;;;;;;;;-1:-1:-1;24832:8:0;;24856:15;;-1:-1:-1;24856:31:0;;;;;24872:4;;24856:31;;;;;;;;24872:4;24832:8;24856:31;;;5:2:-1;;;;30:1;27;20:12;5:2;24856:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;24717:3:0;;;;;-1:-1:-1;24681:218:0;;-1:-1:-1;;24681:218:0;;;24527:379;;:::o;23934:189::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;24014:9;24005:19;;;23997:48;;;;;-1:-1:-1;;;23997:48:0;;;;;;;;;;;;-1:-1:-1;;;23997:48:0;;;;;;;;;;;;;;;24074:8;;24061:28;;24084:4;;24074:8;24061:28;;;;;24100:8;:15;23934:189::o;19145:81::-;19214:4;;-1:-1:-1;;;;;19214:4:0;19145:81;:::o;19431:91::-;19505:9;;-1:-1:-1;;;;;19505:9:0;19431:91;:::o;17469:95::-;17521:42;17469:95;:::o;23594:174::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23663:19:0;;23655:45;;;;;-1:-1:-1;;;23655:45:0;;;;;;;;;;;;-1:-1:-1;;;23655:45:0;;;;;;;;;;;;;;;23725:4;;23716:21;;-1:-1:-1;;;;;23716:21:0;;;;23725:4;;23716:21;;23725:4;;23716:21;23748:4;:12;;-1:-1:-1;;;;;;23748:12:0;-1:-1:-1;;;;;23748:12:0;;;;;;;;;;23594:174::o;23412:::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;23481:19:0;;23473:45;;;;;-1:-1:-1;;;23473:45:0;;;;;;;;;;;;-1:-1:-1;;;23473:45:0;;;;;;;;;;;;;;;23543:4;;;23534:21;;-1:-1:-1;;;;;23534:21:0;;;;23543:4;;;23534:21;;;23566:4;:12;;-1:-1:-1;;;;;;23566:12:0;-1:-1:-1;;;;;23566:12:0;;;;;;;;;;23412:174::o;17317:44::-;;;;:::o;17705:43::-;;;;;;;;;;;;-1:-1:-1;;;;;17705:43:0;;:::o;489:::-;527:5;489:43;:::o;623:53::-;666:10;623:53;:::o;19831:1707::-;20004:9;;19941:10;;;;-1:-1:-1;;;;;20004:9:0;19990:10;:23;19982:53;;;;;-1:-1:-1;;;19982:53:0;;;;;;;;;;;;-1:-1:-1;;;19982:53:0;;;;;;;;;;;;;;;20054:31;;;20046:63;;;;;-1:-1:-1;;;20046:63:0;;;;;;;;;;;;-1:-1:-1;;;20046:63:0;;;;;;;;;;;;;;;172:1;20128:33;;;20120:60;;;;;-1:-1:-1;;;20120:60:0;;;;;;;;;;;;-1:-1:-1;;;20120:60:0;;;;;;;;;;;;;;;223:1;20199:33;;;20191:60;;;;;-1:-1:-1;;;20191:60:0;;;;;;;;;;;;-1:-1:-1;;;20191:60:0;;;;;;;;;;;;;;;20329:28;;;;;;;;;;;;;;;;20264:19;;20298:28;;20343:6;20329:28;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;20329:28:0;-1:-1:-1;20298:59:0;-1:-1:-1;20373:7:0;20368:418;20386:17;;;;-1:-1:-1;20368:418:0;;;20429:5;;;;20425:153;;20523:6;;20534:1;20530;:5;20523:13;;;;;;;;;;;;;;;-1:-1:-1;;;;;20523:13:0;-1:-1:-1;;;;;20511:25:0;:6;;20518:1;20511:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;20511:9:0;-1:-1:-1;;;;;20511:25:0;;20503:59;;;;;-1:-1:-1;;;20503:59:0;;;;;;;;;;;;-1:-1:-1;;;20503:59:0;;;;;;;;;;;;;;;20611:6;;20618:1;20611:9;;;;;;;;;;;;;;;-1:-1:-1;;;;;20611:9:0;20594:11;20606:1;20594:14;;;;;;;;;;-1:-1:-1;;;;;20594:26:0;;;:14;;;;;;;;;;;:26;17521:42;20639:6;;:9;;;;;;;;;;;;;;;;-1:-1:-1;;;;;20639:9:0;-1:-1:-1;;;;;20639:21:0;;20635:83;;;20698:4;;20681:14;;-1:-1:-1;;;;;20698:4:0;;;;20681:11;;:14;;;;;;;;;;;;;;;:21;-1:-1:-1;;;;;20681:21:0;;;-1:-1:-1;;;;;20681:21:0;;;;;20635:83;20746:28;20763:7;;20771:1;20763:10;;;;;;;;;;;;;;;20746:11;:16;;:28;;;;:::i;:::-;20732:42;-1:-1:-1;20405:3:0;;20368:418;;;-1:-1:-1;20828:21:0;20865:7;20860:260;20882:11;:18;20878:1;:22;;;20860:260;;;20975:15;20993:38;21019:11;20993:20;21009:3;20993:7;;21001:1;20993:10;;;;;;;;;;;;;;;:15;;:20;;;;:::i;:::-;:25;:38;:25;:38;:::i;:::-;20975:56;;21074:8;21084:11;21096:1;21084:14;;;;;;;;;;;;;;;;21100:7;21057:51;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;21057:51:0;;;;;;;-1:-1:-1;;;;;21057:51:0;-1:-1:-1;;;;;21057:51:0;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;21057:51:0;;;21046:62;;20860:260;20902:3;;;;;;;20860:260;;;-1:-1:-1;21136:19:0;;;;;;;;;;21196:12;21211:13;;;:8;:13;;;;;;;;21136:19;;-1:-1:-1;;;;;;21211:13:0;21239:18;;21235:272;;21274:9;21293:4;21274:24;;21338:14;;21319:2;-1:-1:-1;;;;;21319:14:0;;:16;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21319:16:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;21319:16:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21319:16:0;:33;21315:181;;;-1:-1:-1;21381:4:0;;-1:-1:-1;21373:18:0;;-1:-1:-1;;;;21373:18:0;21315:181;21462:18;21476:3;21462:13;:18::i;:::-;21235:272;;21525:5;21517:13;;19831:1707;;;;;;;;;;;;:::o;739:58::-;779:18;739:58;:::o;19335:88::-;19407:8;;19335:88;:::o;180:44::-;223:1;180:44;:::o;129:::-;172:1;129:44;:::o;17849:38::-;;;;:::o;24275:194::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;24350:20:0;;24342:46;;;;;-1:-1:-1;;;24342:46:0;;;;;;;;;;;;-1:-1:-1;;;24342:46:0;;;;;;;;;;;;;;;24414:9;;24404:28;;-1:-1:-1;;;;;24404:28:0;;;;24414:9;;24404:28;;24414:9;;24404:28;24443:9;:18;;-1:-1:-1;;;;;;24443:18:0;-1:-1:-1;;;;;24443:18:0;;;;;;;;;;24275:194::o;19056:81::-;19098:7;19125:4;-1:-1:-1;;;;;19125:4:0;19056:81;:::o;685:47::-;724:8;685:47;:::o;21608:444::-;21697:9;;-1:-1:-1;;;;;21697:9:0;21683:10;:23;21675:53;;;;;-1:-1:-1;;;21675:53:0;;;;;;;;;;;;-1:-1:-1;;;21675:53:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;21747:18:0;;21739:44;;;;;-1:-1:-1;;;21739:44:0;;;;;;;;;;;;-1:-1:-1;;;21739:44:0;;;;;;;;;;;;;;;21802:8;21794:32;;;;;-1:-1:-1;;;21794:32:0;;;;;;;;;;;;-1:-1:-1;;;21794:32:0;;;;;;;;;;;;;;;21868:1;21843:13;;;:8;:13;;;;;;-1:-1:-1;;;;;21843:13:0;21839:122;;21929:12;;:20;;21947:1;21929:20;:17;:20;:::i;:::-;21914:12;:35;21839:122;21973:13;;;;:8;:13;;;;;;;;;:20;;-1:-1:-1;;;;;;21973:20:0;-1:-1:-1;;;;;21973:20:0;;;;;;;;22009:35;;;;;;;21973:20;;22022:10;;22009:35;;;;;;;;;21608:444;;:::o;19234:93::-;19309:10;;19234:93;:::o;23776:150::-;18778:4;;-1:-1:-1;;;;;18778:4:0;18764:10;:18;18756:44;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;-1:-1:-1;;;18756:44:0;;;;;;;;;;;;;;;23859:9;23850:19;;;23842:48;;;;;-1:-1:-1;;;23842:48:0;;;;;;;;;;;;-1:-1:-1;;;23842:48:0;;;;;;;;;;;;;;;23901:10;:17;23776:150::o;9961:247::-;10131:58;;;-1:-1:-1;;;;;10131:58:0;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;10131:58:0;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;10078:122:0;;10111:5;;10078:18;:122::i;6780:654::-;6840:4;7334:20;;7164:66;7383:23;;;;;;:42;;-1:-1:-1;7410:15:0;;;7383:42;7375:51;6780:654;-1:-1:-1;;;;6780:654:0:o;22086:301::-;22150:8;22142:32;;;;;-1:-1:-1;;;22142:32:0;;;;;;;;;;;;-1:-1:-1;;;22142:32:0;;;;;;;;;;;;;;;22216:1;22191:13;;;:8;:13;;;;;;-1:-1:-1;;;;;22191:13:0;:27;22187:193;;22264:13;;;;:8;:13;;;;;;;;;;22240:43;;;;;;;-1:-1:-1;;;;;22264:13:0;;;;22252:10;;22240:43;;;;;;;;;22305:13;;;;:8;:13;;;;;22298:20;;-1:-1:-1;;;;;;22298:20:0;;;22348:12;;:20;;22298;22348;:17;:20;:::i;:::-;22333:12;:35;22187:193;22086:301;:::o;13300:169::-;13359:7;13391:5;;;13415:6;;;;13407:35;;;;;-1:-1:-1;;;13407:35:0;;;;;;;;;;;;-1:-1:-1;;;13407:35:0;;;;;;;;;;;;;;;13460:1;13300:169;-1:-1:-1;;;13300:169:0:o;13925:306::-;13984:7;14017:5;;;14041:6;;;:21;;;14061:1;14056;14051:2;:6;;;;;;:11;14041:21;14033:50;;;;;-1:-1:-1;;;14033:50:0;;;;;;;;;;;;-1:-1:-1;;;14033:50:0;;;;;;;;;;;;;;;14113:8;14107:15;;14141:8;;;;14133:37;;;;;-1:-1:-1;;;14133:37:0;;;;;;;;;;;;-1:-1:-1;;;14133:37:0;;;;;;;;;;;;;;;14181:10;12901:6;14194:2;:9;;;13925:306;-1:-1:-1;;;;;;13925:306:0:o;14239:382::-;14298:7;14326:6;14318:31;;;;;-1:-1:-1;;;14318:31:0;;;;;;;;;;;;-1:-1:-1;;;14318:31:0;;;;;;;;;;;;;;;12901:6;14373:8;;14400:6;;;:24;;;12901:6;14415:1;14410:2;:6;;;;;;:14;14400:24;14392:53;;;;;-1:-1:-1;;;14392:53:0;;;;;;;;;;;;-1:-1:-1;;;14392:53:0;;;;;;;;;;;;;;;14496:1;14492:5;;14486:12;;14517:8;;;;14509:37;;;;;-1:-1:-1;;;14509:37:0;;;;;;;;;;;;-1:-1:-1;;;14509:37:0;;;;;;;;;;;;;;;14574:10;14592:1;14587:2;:6;;;;11605:1176;12209:27;12217:5;-1:-1:-1;;;;;12209:25:0;;:27::i;:::-;12201:71;;;;;-1:-1:-1;;;12201:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12346:12;12360:23;12395:5;-1:-1:-1;;;;;12387:19:0;12407:4;12387:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;12387:25:0;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;12345:67:0;;;;12431:7;12423:52;;;;;-1:-1:-1;;;12423:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12492:17;;:21;12488:286;;12665:10;12654:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12654:30:0;12628:134;;;;-1:-1:-1;;;12628:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13477:191;13536:7;13557:9;13568;13581:14;13590:1;13593;13581:8;:14::i;:::-;13556:39;;;;13615:4;13614:5;13606:35;;;;;-1:-1:-1;;;13606:35:0;;;;;;;;;;;;-1:-1:-1;;;13606:35:0;;;;;;;;;;;;;;;-1:-1:-1;13659:1:0;13477:191;-1:-1:-1;;;13477:191:0:o;13676:241::-;13766:7;13775:4;13806:1;13801;:6;13797:113;;-1:-1:-1;;13832:5:0;;;13839;13824:21;;13797:113;-1:-1:-1;;13886:5:0;;;13893:4;13797:113;13676:241;;;;;:::o
Swarm Source
bzzr://7417a3f608928a5fc5f33b2b2e647f4935dabd58de2d99ecb3a420f98fd852b7
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.