ETH Price: $1,615.66 (+2.17%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Leave222667422025-04-14 10:50:477 days ago1744627847IN
0xB6456b57...a0813491a
0 ETH0.000189221.68788575
Leave221698212025-03-31 22:16:5920 days ago1743459419IN
0xB6456b57...a0813491a
0 ETH0.000118191.05419664
Enter221215992025-03-25 4:41:3527 days ago1742877695IN
0xB6456b57...a0813491a
0 ETH0.000090481.12897306
Enter221215942025-03-25 4:40:3527 days ago1742877635IN
0xB6456b57...a0813491a
0 ETH0.000120621.18199982
Withdraw221096672025-03-23 12:43:1129 days ago1742733791IN
0xB6456b57...a0813491a
0 ETH0.000089640.89490199
Transfer221083942025-03-23 8:28:1129 days ago1742718491IN
0xB6456b57...a0813491a
0 ETH0.000020150.39002727
Transfer221038372025-03-22 17:13:1129 days ago1742663591IN
0xB6456b57...a0813491a
0 ETH0.000022190.42936542
Set Governance221038252025-03-22 17:10:4729 days ago1742663447IN
0xB6456b57...a0813491a
0 ETH0.000012420.46041004
Withdraw220943272025-03-21 9:24:2331 days ago1742549063IN
0xB6456b57...a0813491a
0 ETH0.000077430.93213983
Enter220931892025-03-21 5:36:1131 days ago1742535371IN
0xB6456b57...a0813491a
0 ETH0.000029790.37176282
Rage Leave220931812025-03-21 5:34:3531 days ago1742535275IN
0xB6456b57...a0813491a
0 ETH0.000040430.40101501
Withdraw219997212025-03-08 4:18:3544 days ago1741407515IN
0xB6456b57...a0813491a
0 ETH0.000108691.13971678
Withdraw219543582025-03-01 20:18:2350 days ago1740860303IN
0xB6456b57...a0813491a
0 ETH0.000132771.39200211
Enter219402312025-02-27 21:01:3552 days ago1740690095IN
0xB6456b57...a0813491a
0 ETH0.000152131.56417732
Withdraw219381892025-02-27 14:11:3553 days ago1740665495IN
0xB6456b57...a0813491a
0 ETH0.000184561.93518425
Withdraw219342102025-02-27 0:52:3553 days ago1740617555IN
0xB6456b57...a0813491a
0 ETH0.000114521.20080097
Leave218975432025-02-21 21:56:5958 days ago1740175019IN
0xB6456b57...a0813491a
0 ETH0.000151671.35299076
Withdraw218924212025-02-21 4:47:1159 days ago1740113231IN
0xB6456b57...a0813491a
0 ETH0.00010271.31191646
Withdraw218730502025-02-18 11:46:4762 days ago1739879207IN
0xB6456b57...a0813491a
0 ETH0.0001131.18467635
Leave218596472025-02-16 14:46:4764 days ago1739717207IN
0xB6456b57...a0813491a
0 ETH0.000144721.29096274
Leave218549372025-02-15 22:56:4764 days ago1739660207IN
0xB6456b57...a0813491a
0 ETH0.000134961.20391989
Withdraw218431522025-02-14 7:16:2366 days ago1739517383IN
0xB6456b57...a0813491a
0 ETH0.000160511.60240214
Withdraw217976592025-02-07 22:36:4772 days ago1738967807IN
0xB6456b57...a0813491a
0 ETH0.000176891.85472283
Leave217897792025-02-06 20:13:2373 days ago1738872803IN
0xB6456b57...a0813491a
0 ETH0.000274512.4487443
Transfer217821562025-02-05 18:42:4774 days ago1738780967IN
0xB6456b57...a0813491a
0 ETH0.000116142.47588896
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StakingPool

Compiler Version
v0.8.1+commit.df193b15

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-03-30
*/

pragma solidity 0.8.1;

interface ISupplyController {
	function mintIncentive(address addr) external;
	function mintableIncentive(address addr) external view returns (uint);
	function mint(address token, address owner, uint amount) external;
	function changeSupplyController(address newSupplyController) external;
}

interface IADXToken {
	function transfer(address to, uint256 amount) external returns (bool);
	function transferFrom(address from, address to, uint256 amount) external returns (bool);
	function approve(address spender, uint256 amount) external returns (bool);
	function balanceOf(address spender) external view returns (uint);
	function allowance(address owner, address spender) external view returns (uint);
	function totalSupply() external returns (uint);
	function supplyController() external view returns (ISupplyController);
	function changeSupplyController(address newSupplyController) external;
	function mint(address owner, uint amount) external;
}


interface IERCDecimals {
	function decimals() external view returns (uint);
}

interface IChainlink {
	// AUDIT: ensure this API is not deprecated
	function latestAnswer() external view returns (uint);
}

// Full interface here: https://github.com/Uniswap/uniswap-v2-periphery/blob/master/contracts/interfaces/IUniswapV2Router01.sol
interface IUniswapSimple {
	function WETH() external pure returns (address);
	function swapTokensForExactTokens(
		uint amountOut,
		uint amountInMax,
		address[] calldata path,
		address to,
		uint deadline
	) external returns (uint[] memory amounts);
}

contract StakingPool {
	// ERC20 stuff
	// Constants
	string public constant name = "AdEx Staking Token";
	uint8 public constant decimals = 18;
	string public constant symbol = "ADX-STAKING";

	// Mutable variables
	uint public totalSupply;
	mapping(address => uint) private balances;
	mapping(address => mapping(address => uint)) private allowed;

	// EIP 2612
	bytes32 public DOMAIN_SEPARATOR;
	// keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
	bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
	mapping(address => uint) public nonces;

	// ERC20 events
	event Approval(address indexed owner, address indexed spender, uint amount);
	event Transfer(address indexed from, address indexed to, uint amount);

	// ERC20 methods
	function balanceOf(address owner) external view returns (uint balance) {
		return balances[owner];
	}

	function transfer(address to, uint amount) external returns (bool success) {
		require(to != address(this), "BAD_ADDRESS");
		balances[msg.sender] = balances[msg.sender] - amount;
		balances[to] = balances[to] + amount;
		emit Transfer(msg.sender, to, amount);
		return true;
	}

	function transferFrom(address from, address to, uint amount) external returns (bool success) {
		balances[from] = balances[from] - amount;
		allowed[from][msg.sender] = allowed[from][msg.sender] - amount;
		balances[to] = balances[to] + amount;
		emit Transfer(from, to, amount);
		return true;
	}

	function approve(address spender, uint amount) external returns (bool success) {
		allowed[msg.sender][spender] = amount;
		emit Approval(msg.sender, spender, amount);
		return true;
	}

	function allowance(address owner, address spender) external view returns (uint remaining) {
		return allowed[owner][spender];
	}

	// EIP 2612
	function permit(address owner, address spender, uint amount, uint deadline, uint8 v, bytes32 r, bytes32 s) external {
		require(deadline >= block.timestamp, "DEADLINE_EXPIRED");
		bytes32 digest = keccak256(abi.encodePacked(
			"\x19\x01",
			DOMAIN_SEPARATOR,
			keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, amount, nonces[owner]++, deadline))
		));
		address recoveredAddress = ecrecover(digest, v, r, s);
		require(recoveredAddress != address(0) && recoveredAddress == owner, "INVALID_SIGNATURE");
		allowed[owner][spender] = amount;
		emit Approval(owner, spender, amount);
	}

	// Inner
	function innerMint(address owner, uint amount) internal {
		totalSupply = totalSupply + amount;
		balances[owner] = balances[owner] + amount;
		// Because of https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.md#transfer-1
		emit Transfer(address(0), owner, amount);
	}
	function innerBurn(address owner, uint amount) internal {
		totalSupply = totalSupply - amount;
		balances[owner] = balances[owner] - amount;
		emit Transfer(owner, address(0), amount);
	}

	// Pool functionality
	uint public timeToUnbond = 20 days;
	uint public rageReceivedPromilles = 700;

	IUniswapSimple public uniswap; // = IUniswapSimple(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
	IChainlink public ADXUSDOracle; // = IChainlink(0x231e764B44b2C1b7Ca171fa8021A24ed520Cde10);

	IADXToken public immutable ADXToken;
	address public guardian;
	address public validator;
	address public governance;

	// claim token whitelist: normally claim tokens are stablecoins
	// eg Tether (0xdAC17F958D2ee523a2206206994597C13D831ec7)
	mapping (address => bool) public whitelistedClaimTokens;

	// Commitment ID against the max amount of tokens it will pay out
	mapping (bytes32 => uint) public commitments;
	// How many of a user's shares are locked
	mapping (address => uint) public lockedShares;
	// Unbonding commitment from a staker
	struct UnbondCommitment {
		address owner;
		uint shares;
		uint unlocksAt;
	}

	// claims/penalizations limits
	uint public maxDailyPenaltiesPromilles;
	uint public limitLastReset;
	uint public limitRemaining;

	// Staking pool events
	// LogLeave/LogWithdraw must begin with the UnbondCommitment struct
	event LogLeave(address indexed owner, uint shares, uint unlocksAt, uint maxTokens);
	event LogWithdraw(address indexed owner, uint shares, uint unlocksAt, uint maxTokens, uint receivedTokens);
	event LogRageLeave(address indexed owner, uint shares, uint maxTokens, uint receivedTokens);
	event LogNewGuardian(address newGuardian);
	event LogClaim(address tokenAddr, address to, uint amountInUSD, uint burnedValidatorShares, uint usedADX, uint totalADX, uint totalShares);
	event LogPenalize(uint burnedADX);

	constructor(IADXToken token, IUniswapSimple uni, IChainlink oracle, address guardianAddr, address validatorStakingWallet, address governanceAddr, address claimToken) {
		ADXToken = token;
		uniswap = uni;
		ADXUSDOracle = oracle;
		guardian = guardianAddr;
		validator = validatorStakingWallet;
		governance = governanceAddr;
		whitelistedClaimTokens[claimToken] = true;

		// EIP 2612
		uint chainId;
		assembly {
			chainId := chainid()
		}
		DOMAIN_SEPARATOR = keccak256(
			abi.encode(
				keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
				keccak256(bytes(name)),
				keccak256(bytes("1")),
				chainId,
				address(this)
			)
		);
	}

	// Governance functions
	function setGovernance(address addr) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		governance = addr;
	}
	function setDailyPenaltyMax(uint max) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		require(max <= 200, "DAILY_PENALTY_TOO_LARGE");
		maxDailyPenaltiesPromilles = max;
		resetLimits();
	}
	function setRageReceived(uint rageReceived) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		// AUDIT: should there be a minimum here?
		require(rageReceived <= 1000, "TOO_LARGE");
		rageReceivedPromilles = rageReceived;
	}
	function setTimeToUnbond(uint time) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		require(time >= 1 days && time <= 30 days, "BOUNDS");
		timeToUnbond = time;
	}
	function setGuardian(address newGuardian) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		guardian = newGuardian;
		emit LogNewGuardian(newGuardian);
	}
	function setWhitelistedClaimToken(address token, bool whitelisted) external {
		require(governance == msg.sender, "NOT_GOVERNANCE");
		whitelistedClaimTokens[token] = whitelisted;
	}

	// Pool stuff
	function shareValue() external view returns (uint) {
		if (totalSupply == 0) return 0;
		return ((ADXToken.balanceOf(address(this)) + ADXToken.supplyController().mintableIncentive(address(this)))
			* 1e18)
			/ totalSupply;
	}

	function innerEnter(address recipient, uint amount) internal {
		// Please note that minting has to be in the beginning so that we take it into account
		// when using ADXToken.balanceOf()
		// Minting makes an external call but it"s to a trusted contract (ADXToken)
		ADXToken.supplyController().mintIncentive(address(this));

		uint totalADX = ADXToken.balanceOf(address(this));

		// The totalADX == 0 check here should be redudnant; the only way to get totalSupply to a nonzero val is by adding ADX
		if (totalSupply == 0 || totalADX == 0) {
			innerMint(recipient, amount);
		} else {
			uint256 newShares = (amount * totalSupply) / totalADX;
			innerMint(recipient, newShares);
		}
		require(ADXToken.transferFrom(msg.sender, address(this), amount));
		// no events, as innerMint already emits enough to know the shares amount and price
	}

	function enter(uint amount) external {
		innerEnter(msg.sender, amount);
	}

	function enterTo(address recipient, uint amount) external {
		innerEnter(recipient, amount);
	}

	function unbondingCommitmentWorth(address owner, uint shares, uint unlocksAt) external view returns (uint) {
		if (totalSupply == 0) return 0;
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: owner, shares: shares, unlocksAt: unlocksAt })));
		uint maxTokens = commitments[commitmentId];
		uint totalADX = ADXToken.balanceOf(address(this));
		uint currentTokens = (shares * totalADX) / totalSupply;
		return currentTokens > maxTokens ? maxTokens : currentTokens;
	}

	function leave(uint shares, bool skipMint) external {
		if (!skipMint) ADXToken.supplyController().mintIncentive(address(this));

		require(shares <= balances[msg.sender] - lockedShares[msg.sender], "INSUFFICIENT_SHARES");
		uint totalADX = ADXToken.balanceOf(address(this));
		uint maxTokens = (shares * totalADX) / totalSupply;
		uint unlocksAt = block.timestamp + timeToUnbond;
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: msg.sender, shares: shares, unlocksAt: unlocksAt })));
		require(commitments[commitmentId] == 0, "COMMITMENT_EXISTS");

		commitments[commitmentId] = maxTokens;
		lockedShares[msg.sender] += shares;

		emit LogLeave(msg.sender, shares, unlocksAt, maxTokens);
	}

	function withdraw(uint shares, uint unlocksAt, bool skipMint) external {
		if (!skipMint) ADXToken.supplyController().mintIncentive(address(this));

		require(block.timestamp > unlocksAt, "UNLOCK_TOO_EARLY");
		bytes32 commitmentId = keccak256(abi.encode(UnbondCommitment({ owner: msg.sender, shares: shares, unlocksAt: unlocksAt })));
		uint maxTokens = commitments[commitmentId];
		require(maxTokens > 0, "NO_COMMITMENT");
		uint totalADX = ADXToken.balanceOf(address(this));
		uint currentTokens = (shares * totalADX) / totalSupply;
		uint receivedTokens = currentTokens > maxTokens ? maxTokens : currentTokens;

		commitments[commitmentId] = 0;
		lockedShares[msg.sender] -= shares;

		innerBurn(msg.sender, shares);
		require(ADXToken.transfer(msg.sender, receivedTokens));

		emit LogWithdraw(msg.sender, shares, unlocksAt, maxTokens, receivedTokens);
	}

	function rageLeave(uint shares, bool skipMint) external {
		if (!skipMint) ADXToken.supplyController().mintIncentive(address(this));

		uint totalADX = ADXToken.balanceOf(address(this));
		uint adxAmount = (shares * totalADX) / totalSupply;
		uint receivedTokens = (adxAmount * rageReceivedPromilles) / 1000;
		innerBurn(msg.sender, shares);
		require(ADXToken.transfer(msg.sender, receivedTokens));

		emit LogRageLeave(msg.sender, shares, adxAmount, receivedTokens);
	}

	// Insurance mechanism
	// In case something goes wrong, this can be used to recoup funds
	// As of V5, the idea is to use it to provide some interest (eg 10%) for late refunds, in case channels get stuck and have to wait through their challenge period
	function claim(address tokenOut, address to, uint amount) external {
		require(msg.sender == guardian, "NOT_GUARDIAN");

		// start by resetting claim/penalty limits
		resetLimits();

		// NOTE: minting is intentionally skipped here
		// This means that a validator may be punished a bit more when burning their shares,
		// but it guarantees that claim() always works
		uint totalADX = ADXToken.balanceOf(address(this));

		// Note: whitelist of tokenOut tokens
		require(whitelistedClaimTokens[tokenOut], "TOKEN_NOT_WHITELISTED");

		address[] memory path = new address[](3);
		path[0] = address(ADXToken);
		path[1] = uniswap.WETH();
		path[2] = tokenOut;

		// You may think the Uniswap call enables reentrancy, but reentrancy is a problem only if the pattern is check-call-modify, not call-check-modify as is here
		// there"s no case in which we "double-spend" a value
		// Plus, ADX, USDT and uniswap are all trusted

		// Slippage protection; 5% slippage allowed
		uint price = ADXUSDOracle.latestAnswer();
		// chainlink price is in 1e8
		// for example, if the amount is in 1e6;
		// we need to convert from 1e6 to 1e18 (adx) but we divide by 1e8 (price); 18 - 6 + 8 ; verified this by calculating manually
		uint multiplier = 1.05e26 / (10 ** IERCDecimals(tokenOut).decimals());
		uint adxAmountMax = (amount * multiplier) / price;
		require(adxAmountMax < totalADX, "INSUFFICIENT_ADX");
		uint[] memory amounts = uniswap.swapTokensForExactTokens(amount, adxAmountMax, path, to, block.timestamp);

		// calculate the total ADX amount used in the swap
		uint adxAmountUsed = amounts[0];

		// burn the validator shares so that they pay for it first, before dilluting other holders
		// calculate the worth in ADX of the validator"s shares
		uint sharesNeeded = (adxAmountUsed * totalSupply) / totalADX;
		uint toBurn = sharesNeeded < balances[validator] ? sharesNeeded : balances[validator];
		if (toBurn > 0) innerBurn(validator, toBurn);

		// Technically redundant cause we"ll fail on the subtraction, but we"re doing this for better err msgs
		require(limitRemaining >= adxAmountUsed, "LIMITS");
		limitRemaining -= adxAmountUsed;

		emit LogClaim(tokenOut, to, amount, toBurn, adxAmountUsed, totalADX, totalSupply);
	}

	function penalize(uint adxAmount) external {
		require(msg.sender == guardian, "NOT_GUARDIAN");
		// AUDIT: we can do getLimitRemaining() instead of resetLimits() that returns the remaining limit
		resetLimits();
		// Technically redundant cause we'll fail on the subtraction, but we're doing this for better err msgs
		require(limitRemaining >= adxAmount, "LIMITS");
		limitRemaining -= adxAmount;
		require(ADXToken.transfer(address(0), adxAmount));
		emit LogPenalize(adxAmount);
	}

	function resetLimits() internal {
		if (block.timestamp - limitLastReset > 24 hours) {
			limitLastReset = block.timestamp;
			limitRemaining = (ADXToken.balanceOf(address(this)) * maxDailyPenaltiesPromilles) / 1000;
		}
	}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IADXToken","name":"token","type":"address"},{"internalType":"contract IUniswapSimple","name":"uni","type":"address"},{"internalType":"contract IChainlink","name":"oracle","type":"address"},{"internalType":"address","name":"guardianAddr","type":"address"},{"internalType":"address","name":"validatorStakingWallet","type":"address"},{"internalType":"address","name":"governanceAddr","type":"address"},{"internalType":"address","name":"claimToken","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddr","type":"address"},{"indexed":false,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amountInUSD","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burnedValidatorShares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"usedADX","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalADX","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalShares","type":"uint256"}],"name":"LogClaim","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"}],"name":"LogLeave","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newGuardian","type":"address"}],"name":"LogNewGuardian","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"burnedADX","type":"uint256"}],"name":"LogPenalize","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"LogRageLeave","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"shares","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"receivedTokens","type":"uint256"}],"name":"LogWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"ADXToken","outputs":[{"internalType":"contract IADXToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ADXUSDOracle","outputs":[{"internalType":"contract IChainlink","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"remaining","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenOut","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"enter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"enterTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"governance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"guardian","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"leave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitLastReset","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitRemaining","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockedShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxDailyPenaltiesPromilles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"adxAmount","type":"uint256"}],"name":"penalize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"rageLeave","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rageReceivedPromilles","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"max","type":"uint256"}],"name":"setDailyPenaltyMax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setGovernance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newGuardian","type":"address"}],"name":"setGuardian","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rageReceived","type":"uint256"}],"name":"setRageReceived","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"setTimeToUnbond","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"bool","name":"whitelisted","type":"bool"}],"name":"setWhitelistedClaimToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"shareValue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"timeToUnbond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"unlocksAt","type":"uint256"}],"name":"unbondingCommitmentWorth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswap","outputs":[{"internalType":"contract IUniswapSimple","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"validator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistedClaimTokens","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shares","type":"uint256"},{"internalType":"uint256","name":"unlocksAt","type":"uint256"},{"internalType":"bool","name":"skipMint","type":"bool"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60a0604052621a5e006005556102bc6006553480156200001e57600080fd5b50604051620031ad380380620031ad8339810160408190526200004191620001a4565b606087901b6001600160601b031916608052600780546001600160a01b03199081166001600160a01b0389811691909117909255600880548216888416179055600980548216878416179055600a80548216868416179055600b805490911684831617905581166000908152600c6020908152604091829020805460ff1916600190811790915582518084018452601281527120b222bc1029ba30b5b4b733902a37b5b2b760711b9083015282518084018452908152603160f81b90820152905146916200017a917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f917ff1ddb5885a0eacccce23d63d5d9cd50fd21fe8b88ddfa2f70766021ce46cdbed917fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69186913091016200024e565b60405160208183030381529060405280519060200120600381905550505050505050505062000293565b600080600080600080600060e0888a031215620001bf578283fd5b8751620001cc816200027a565b6020890151909750620001df816200027a565b6040890151909650620001f2816200027a565b606089015190955062000205816200027a565b608089015190945062000218816200027a565b60a08901519093506200022b816200027a565b60c08901519092506200023e816200027a565b8091505092959891949750929550565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b6001600160a01b03811681146200029057600080fd5b50565b60805160601c612e7d6200033060003960008181610738015281816108d9015281816109e701528181610b4901528181610c6a01528181610df501528181610efc01528181610fdf015281816111c2015281816112f3015281816113d8015281816118360152818161198201528181611c4801528181611d53015281816120e8015281816121890152818161228e01526123790152612e7d6000f3fe608060405234801561001057600080fd5b506004361061025e5760003560e01c80638273402711610146578063ab033ea9116100c3578063c6257b4c11610087578063c6257b4c146104a0578063c7f9218a146104a8578063d505accf146104bb578063dd62ed3e146104ce578063e336ac44146104e1578063f893d346146104f45761025e565b8063ab033ea914610462578063adec4a5014610475578063b6dcaf651461047d578063c066f75e14610485578063c4911ee01461048d5761025e565b806395d89b411161010a57806395d89b411461040e578063996cba68146104165780639b4ee06414610429578063a59f3e0c1461043c578063a9059cbb1461044f5761025e565b806382734027146103af578063839df945146103c25780638a07b419146103d55780638a0dac4a146103e85780638ec0a9eb146103fb5761025e565b806333cfcd3b116101df578063452a9320116101a3578063452a93201461035e5780635aa6e675146103665780636e6eff3e1461036e57806370a082311461037657806372a3b8b3146103895780637ecebe001461039c5761025e565b806333cfcd3b146103205780633644e5151461033357806338156a971461033b5780633a5381b51461034e578063447b15f4146103565761025e565b80632017422d116102265780632017422d146102d357806323b872dd146102db5780632681f7e4146102ee57806330adf81f14610303578063313ce5671461030b5761025e565b806306fdde0314610263578063070141c114610281578063095ea7b3146102965780631322ed44146102b657806318160ddd146102cb575b600080fd5b61026b610507565b60405161027891906128ab565b60405180910390f35b61029461028f36600461270f565b610535565b005b6102a96102a43660046125d5565b61058f565b6040516102789190612845565b6102be6105f9565b6040516102789190612850565b6102be6105ff565b6102be610605565b6102a96102e93660046124f3565b61060b565b6102f66106f9565b60405161027891906127b6565b6102be610708565b61031361072c565b6040516102789190612c2d565b61029461032e366004612763565b610731565b6102be610aca565b6102946103493660046125a8565b610ad0565b6102f6610b25565b6102be610b34565b6102f6610d1b565b6102f6610d2a565b6102be610d39565b6102be610384366004612483565b610d3f565b6102a9610397366004612483565b610d5a565b6102be6103aa366004612483565b610d6f565b6102946103bd36600461270f565b610d81565b6102be6103d036600461270f565b610ddc565b6102946103e336600461273f565b610dee565b6102946103f6366004612483565b6110bd565b6102be610409366004612600565b61113d565b61026b611280565b6102946104243660046124f3565b6112a7565b61029461043736600461273f565b61182f565b61029461044a36600461270f565b611b2b565b6102a961045d3660046125d5565b611b35565b610294610470366004612483565b611be5565b6102be611c31565b6102f6611c37565b6102f6611c46565b61029461049b36600461270f565b611c6a565b6102be611ccb565b6102946104b636600461270f565b611cd1565b6102946104c9366004612533565b611e15565b6102be6104dc3660046124bb565b611fe8565b6102be6104ef366004612483565b612013565b6102946105023660046125d5565b612025565b6040518060400160405280601281526020017120b222bc1029ba30b5b4b733902a37b5b2b760711b81525081565b600b546001600160a01b031633146105685760405162461bcd60e51b815260040161055f90612a01565b60405180910390fd5b6103e881111561058a5760405162461bcd60e51b815260040161055f90612b14565b600655565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105e8908690612850565b60405180910390a350600192915050565b60105481565b60005481565b600f5481565b6001600160a01b03831660009081526001602052604081205461062f908390612da6565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610667908390612da6565b6001600160a01b0380861660009081526002602090815260408083203384528252808320949094559186168152600190915220546106a6908390612c3b565b6001600160a01b038085166000818152600160205260409081902093909355915190861690600080516020612e28833981519152906106e6908690612850565b60405180910390a35060015b9392505050565b6007546001600160a01b031681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b80610825577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561078f57600080fd5b505afa1580156107a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c7919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b81526004016107f291906127b6565b600060405180830381600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050505b8142116108445760405162461bcd60e51b815260040161055f90612962565b60006040518060600160405280336001600160a01b031681526020018581526020018481525060405160200161087a9190612b62565b60408051601f1981840301815291815281516020928301206000818152600d909352912054909150806108bf5760405162461bcd60e51b815260040161055f90612a74565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061090e9030906004016127b6565b60206040518083038186803b15801561092657600080fd5b505afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190612727565b90506000805482886109709190612d87565b61097a9190612c53565b9050600083821161098b578161098d565b835b6000868152600d60209081526040808320839055338352600e909152812080549293508a929091906109c0908490612da6565b909155506109d090503389612033565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90610a1e903390859060040161282c565b602060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7091906126f3565b610a7957600080fd5b336001600160a01b03167f71ec6330779eb13064fdcb040e03c78e2f9e68fb56bcf3ad120223fd1bcd421889898785604051610ab89493929190612c12565b60405180910390a25050505050505050565b60035481565b600b546001600160a01b03163314610afa5760405162461bcd60e51b815260040161055f90612a01565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600a546001600160a01b031681565b60008054610b4457506000610d18565b6000547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd8919061249f565b6001600160a01b03166320b49935306040518263ffffffff1660e01b8152600401610c0391906127b6565b60206040518083038186803b158015610c1b57600080fd5b505afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c539190612727565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610c9f9030906004016127b6565b60206040518083038186803b158015610cb757600080fd5b505afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190612727565b610cf99190612c3b565b610d0b90670de0b6b3a7640000612d87565b610d159190612c53565b90505b90565b6009546001600160a01b031681565b600b546001600160a01b031681565b60065481565b6001600160a01b031660009081526001602052604090205490565b600c6020526000908152604090205460ff1681565b60046020526000908152604090205481565b600b546001600160a01b03163314610dab5760405162461bcd60e51b815260040161055f90612a01565b60c8811115610dcc5760405162461bcd60e51b815260040161055f9061292b565b600f819055610dd96120ad565b50565b600d6020526000908152604090205481565b80610ee2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4c57600080fd5b505afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e84919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b8152600401610eaf91906127b6565b600060405180830381600087803b158015610ec957600080fd5b505af1158015610edd573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190610f319030906004016127b6565b60206040518083038186803b158015610f4957600080fd5b505afa158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190612727565b9050600080548285610f939190612d87565b610f9d9190612c53565b905060006103e860065483610fb29190612d87565b610fbc9190612c53565b9050610fc83386612033565b60405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90611016903390859060040161282c565b602060405180830381600087803b15801561103057600080fd5b505af1158015611044573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106891906126f3565b61107157600080fd5b336001600160a01b03167ff401020088a10cade8fca19ce1c014addc7dd08d911cdd8a9de214dbfafbbe758684846040516110ae93929190612bfc565b60405180910390a25050505050565b600b546001600160a01b031633146110e75760405162461bcd60e51b815260040161055f90612a01565b600980546001600160a01b0319166001600160a01b0383161790556040517f24b6eb124e4a66ed0707b21614e0016f97d5da36704831722f30b8bd70644d35906111329083906127b6565b60405180910390a150565b6000805461114d575060006106f2565b60006040518060600160405280866001600160a01b03168152602001858152602001848152506040516020016111839190612b62565b60408051601f1981840301815282825280516020918201206000818152600d909252918120546370a0823160e01b845291935090916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906111f79030906004016127b6565b60206040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112479190612727565b90506000805482886112599190612d87565b6112639190612c53565b90508281116112725780611274565b825b98975050505050505050565b6040518060400160405280600b81526020016a4144582d5354414b494e4760a81b81525081565b6009546001600160a01b031633146112d15760405162461bcd60e51b815260040161055f906129db565b6112d96120ad565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906113289030906004016127b6565b60206040518083038186803b15801561134057600080fd5b505afa158015611354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113789190612727565b6001600160a01b0385166000908152600c602052604090205490915060ff166113b35760405162461bcd60e51b815260040161055f9061298c565b60408051600380825260808201909252600091602082016060803683370190505090507f00000000000000000000000000000000000000000000000000000000000000008160008151811061141857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561146c57600080fd5b505afa158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a4919061249f565b816001815181106114c557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050848160028151811061150757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600854604080516350d25bcd60e01b8152905160009492909216926350d25bcd92600480840193829003018186803b15801561155c57600080fd5b505afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190612727565b90506000866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190612727565b61161490600a612cb9565b611629906a56da9d67d20d7709000000612c53565b90506000826116388388612d87565b6116429190612c53565b90508481106116635760405162461bcd60e51b815260040161055f90612a9b565b600754604051634401edf760e11b81526000916001600160a01b031690638803dbee9061169c908a9086908a908e904290600401612b8c565b600060405180830381600087803b1580156116b657600080fd5b505af11580156116ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116f29190810190612634565b905060008160008151811061171757634e487b7160e01b600052603260045260246000fd5b60200260200101519050600087600054836117329190612d87565b61173c9190612c53565b600a546001600160a01b031660009081526001602052604081205491925090821061178157600a546001600160a01b0316600090815260016020526040902054611783565b815b905080156117a157600a546117a1906001600160a01b031682612033565b8260115410156117c35760405162461bcd60e51b815260040161055f90612a54565b82601160008282546117d59190612da6565b925050819055507f0261b60f729f5f87ff22bb93906649fdb9a878e2242dd4ce7f1f03a2b7ecfcf58c8c8c84878e60005460405161181997969594939291906127ee565b60405180910390a1505050505050505050505050565b80611923577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561188d57600080fd5b505afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c5919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b81526004016118f091906127b6565b600060405180830381600087803b15801561190a57600080fd5b505af115801561191e573d6000803e3d6000fd5b505050505b336000908152600e60209081526040808320546001909252909120546119499190612da6565b8211156119685760405162461bcd60e51b815260040161055f906128fe565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a08231906119b79030906004016127b6565b60206040518083038186803b1580156119cf57600080fd5b505afa1580156119e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a079190612727565b9050600080548285611a199190612d87565b611a239190612c53565b9050600060055442611a359190612c3b565b905060006040518060600160405280336001600160a01b0316815260200187815260200183815250604051602001611a6d9190612b62565b60408051601f1981840301815291815281516020928301206000818152600d90935291205490915015611ab25760405162461bcd60e51b815260040161055f90612b37565b6000818152600d60209081526040808320869055338352600e90915281208054889290611ae0908490612c3b565b909155505060405133907f99e851f3e691e421e8cb75d61f7ecfa09423e645915271a1813ed6c148c2a0a990611b1b90899086908890612bfc565b60405180910390a2505050505050565b610dd93382612187565b60006001600160a01b038316301415611b605760405162461bcd60e51b815260040161055f90612ac5565b33600090815260016020526040902054611b7b908390612da6565b33600090815260016020526040808220929092556001600160a01b03851681522054611ba8908390612c3b565b6001600160a01b038416600081815260016020526040908190209290925590513390600080516020612e28833981519152906105e8908690612850565b600b546001600160a01b03163314611c0f5760405162461bcd60e51b815260040161055f90612a01565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60055481565b6008546001600160a01b031681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600b546001600160a01b03163314611c945760405162461bcd60e51b815260040161055f90612a01565b620151808110158015611caa575062278d008111155b611cc65760405162461bcd60e51b815260040161055f906129bb565b600555565b60115481565b6009546001600160a01b03163314611cfb5760405162461bcd60e51b815260040161055f906129db565b611d036120ad565b806011541015611d255760405162461bcd60e51b815260040161055f90612a54565b8060116000828254611d379190612da6565b909155505060405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb90611d8b90600090859060040161282c565b602060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd91906126f3565b611de657600080fd5b7f9af9b85f0dc506d38e3da126c4cfb91ad80e95972cdf8de836acbcb914ce746c816040516111329190612850565b42841015611e355760405162461bcd60e51b815260040161055f90612aea565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611e8883612dbd565b919050558a604051602001611ea296959493929190612859565b60405160208183030381529060405280519060200120604051602001611ec992919061279b565b604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051611f06949392919061288d565b6020604051602081039080840390855afa158015611f28573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611f5e5750886001600160a01b0316816001600160a01b0316145b611f7a5760405162461bcd60e51b815260040161055f90612a29565b6001600160a01b03808a166000818152600260209081526040808320948d1680845294909152908190208a9055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611fd5908b90612850565b60405180910390a3505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600e6020526000908152604090205481565b61202f8282612187565b5050565b806000546120419190612da6565b60009081556001600160a01b038316815260016020526040902054612067908290612da6565b6001600160a01b038316600081815260016020526040808220939093559151600080516020612e28833981519152906120a1908590612850565b60405180910390a35050565b62015180601054426120bf9190612da6565b11156121855742601055600f546040516370a0823160e01b81526103e891906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319061211d9030906004016127b6565b60206040518083038186803b15801561213557600080fd5b505afa158015612149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216d9190612727565b6121779190612d87565b6121819190612c53565b6011555b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e057600080fd5b505afa1580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612218919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b815260040161224391906127b6565b600060405180830381600087803b15801561225d57600080fd5b505af1158015612271573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001691506370a08231906122c49030906004016127b6565b60206040518083038186803b1580156122dc57600080fd5b505afa1580156122f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123149190612727565b905060005460001480612325575080155b15612339576123348383612412565b612362565b6000816000548461234a9190612d87565b6123549190612c53565b90506123608482612412565b505b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906323b872dd906123b2903390309087906004016127ca565b602060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240491906126f3565b61240d57600080fd5b505050565b806000546124209190612c3b565b60009081556001600160a01b038316815260016020526040902054612446908290612c3b565b6001600160a01b038316600081815260016020526040808220939093559151909190600080516020612e28833981519152906120a1908590612850565b600060208284031215612494578081fd5b81356106f281612e04565b6000602082840312156124b0578081fd5b81516106f281612e04565b600080604083850312156124cd578081fd5b82356124d881612e04565b915060208301356124e881612e04565b809150509250929050565b600080600060608486031215612507578081fd5b833561251281612e04565b9250602084013561252281612e04565b929592945050506040919091013590565b600080600080600080600060e0888a03121561254d578283fd5b873561255881612e04565b9650602088013561256881612e04565b95506040880135945060608801359350608088013560ff8116811461258b578384fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156125ba578182fd5b82356125c581612e04565b915060208301356124e881612e19565b600080604083850312156125e7578182fd5b82356125f281612e04565b946020939093013593505050565b600080600060608486031215612614578283fd5b833561261f81612e04565b95602085013595506040909401359392505050565b60006020808385031215612646578182fd5b825167ffffffffffffffff8082111561265d578384fd5b818501915085601f830112612670578384fd5b81518181111561268257612682612dee565b838102604051601f19603f830116810181811085821117156126a6576126a6612dee565b604052828152858101935084860182860187018a10156126c4578788fd5b8795505b838610156126e65780518552600195909501949386019386016126c8565b5098975050505050505050565b600060208284031215612704578081fd5b81516106f281612e19565b600060208284031215612720578081fd5b5035919050565b600060208284031215612738578081fd5b5051919050565b60008060408385031215612751578182fd5b8235915060208301356124e881612e19565b600080600060608486031215612777578081fd5b8335925060208401359150604084013561279081612e19565b809150509250925092565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b818110156128d7578581018301518582016040015282016128bb565b818111156128e85783604083870101525b50601f01601f1916929092016040019392505050565b602080825260139082015272494e53554646494349454e545f53484152455360681b604082015260600190565b60208082526017908201527f4441494c595f50454e414c54595f544f4f5f4c41524745000000000000000000604082015260600190565b60208082526010908201526f554e4c4f434b5f544f4f5f4541524c5960801b604082015260600190565b6020808252601590820152741513d2d15397d393d517d5d2125511531254d51151605a1b604082015260600190565b602080825260069082015265424f554e445360d01b604082015260600190565b6020808252600c908201526b2727aa2fa3aaa0a92224a0a760a11b604082015260600190565b6020808252600e908201526d4e4f545f474f5645524e414e434560901b604082015260600190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b6020808252600690820152654c494d49545360d01b604082015260600190565b6020808252600d908201526c1393d7d0d3d353525513515395609a1b604082015260600190565b60208082526010908201526f0929ca6aa8c8c9286928a9ca8be8288b60831b604082015260600190565b6020808252600b908201526a4241445f4144445245535360a81b604082015260600190565b60208082526010908201526f111150511312539157d156141254915160821b604082015260600190565b602080825260099082015268544f4f5f4c4152474560b81b604082015260600190565b602080825260119082015270434f4d4d49544d454e545f45584953545360781b604082015260600190565b81516001600160a01b03168152602080830151908201526040918201519181019190915260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612bdb5784516001600160a01b031683529383019391830191600101612bb6565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b60ff91909116815260200190565b60008219821115612c4e57612c4e612dd8565b500190565b600082612c6e57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612c855750612cb0565b818704821115612c9757612c97612dd8565b80861615612ca457918102915b9490941c938002612c76565b94509492505050565b60006106f26000198484600082612cd2575060016106f2565b81612cdf575060006106f2565b8160018114612cf55760028114612cff57612d2c565b60019150506106f2565b60ff841115612d1057612d10612dd8565b6001841b915084821115612d2657612d26612dd8565b506106f2565b5060208310610133831016604e8410600b8410161715612d5f575081810a83811115612d5a57612d5a612dd8565b6106f2565b612d6c8484846001612c73565b808604821115612d7e57612d7e612dd8565b02949350505050565b6000816000190483118215151615612da157612da1612dd8565b500290565b600082821015612db857612db8612dd8565b500390565b6000600019821415612dd157612dd1612dd8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dd957600080fd5b8015158114610dd957600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a8c2242f25e07400bcca16448c8ff485560366840b7295ef5c83c38b0d88857064736f6c63430008010033000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000231e764b44b2c1b7ca171fa8021a24ed520cde1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ad2d3389895d00910a09f85b12073170af43a2f0000000000000000000000001304f1b9e8eb2c328b564e7fad2c8402a5954572000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061025e5760003560e01c80638273402711610146578063ab033ea9116100c3578063c6257b4c11610087578063c6257b4c146104a0578063c7f9218a146104a8578063d505accf146104bb578063dd62ed3e146104ce578063e336ac44146104e1578063f893d346146104f45761025e565b8063ab033ea914610462578063adec4a5014610475578063b6dcaf651461047d578063c066f75e14610485578063c4911ee01461048d5761025e565b806395d89b411161010a57806395d89b411461040e578063996cba68146104165780639b4ee06414610429578063a59f3e0c1461043c578063a9059cbb1461044f5761025e565b806382734027146103af578063839df945146103c25780638a07b419146103d55780638a0dac4a146103e85780638ec0a9eb146103fb5761025e565b806333cfcd3b116101df578063452a9320116101a3578063452a93201461035e5780635aa6e675146103665780636e6eff3e1461036e57806370a082311461037657806372a3b8b3146103895780637ecebe001461039c5761025e565b806333cfcd3b146103205780633644e5151461033357806338156a971461033b5780633a5381b51461034e578063447b15f4146103565761025e565b80632017422d116102265780632017422d146102d357806323b872dd146102db5780632681f7e4146102ee57806330adf81f14610303578063313ce5671461030b5761025e565b806306fdde0314610263578063070141c114610281578063095ea7b3146102965780631322ed44146102b657806318160ddd146102cb575b600080fd5b61026b610507565b60405161027891906128ab565b60405180910390f35b61029461028f36600461270f565b610535565b005b6102a96102a43660046125d5565b61058f565b6040516102789190612845565b6102be6105f9565b6040516102789190612850565b6102be6105ff565b6102be610605565b6102a96102e93660046124f3565b61060b565b6102f66106f9565b60405161027891906127b6565b6102be610708565b61031361072c565b6040516102789190612c2d565b61029461032e366004612763565b610731565b6102be610aca565b6102946103493660046125a8565b610ad0565b6102f6610b25565b6102be610b34565b6102f6610d1b565b6102f6610d2a565b6102be610d39565b6102be610384366004612483565b610d3f565b6102a9610397366004612483565b610d5a565b6102be6103aa366004612483565b610d6f565b6102946103bd36600461270f565b610d81565b6102be6103d036600461270f565b610ddc565b6102946103e336600461273f565b610dee565b6102946103f6366004612483565b6110bd565b6102be610409366004612600565b61113d565b61026b611280565b6102946104243660046124f3565b6112a7565b61029461043736600461273f565b61182f565b61029461044a36600461270f565b611b2b565b6102a961045d3660046125d5565b611b35565b610294610470366004612483565b611be5565b6102be611c31565b6102f6611c37565b6102f6611c46565b61029461049b36600461270f565b611c6a565b6102be611ccb565b6102946104b636600461270f565b611cd1565b6102946104c9366004612533565b611e15565b6102be6104dc3660046124bb565b611fe8565b6102be6104ef366004612483565b612013565b6102946105023660046125d5565b612025565b6040518060400160405280601281526020017120b222bc1029ba30b5b4b733902a37b5b2b760711b81525081565b600b546001600160a01b031633146105685760405162461bcd60e51b815260040161055f90612a01565b60405180910390fd5b6103e881111561058a5760405162461bcd60e51b815260040161055f90612b14565b600655565b3360008181526002602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906105e8908690612850565b60405180910390a350600192915050565b60105481565b60005481565b600f5481565b6001600160a01b03831660009081526001602052604081205461062f908390612da6565b6001600160a01b0385166000908152600160209081526040808320939093556002815282822033835290522054610667908390612da6565b6001600160a01b0380861660009081526002602090815260408083203384528252808320949094559186168152600190915220546106a6908390612c3b565b6001600160a01b038085166000818152600160205260409081902093909355915190861690600080516020612e28833981519152906106e6908690612850565b60405180910390a35060015b9392505050565b6007546001600160a01b031681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b80610825577f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561078f57600080fd5b505afa1580156107a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c7919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b81526004016107f291906127b6565b600060405180830381600087803b15801561080c57600080fd5b505af1158015610820573d6000803e3d6000fd5b505050505b8142116108445760405162461bcd60e51b815260040161055f90612962565b60006040518060600160405280336001600160a01b031681526020018581526020018481525060405160200161087a9190612b62565b60408051601f1981840301815291815281516020928301206000818152600d909352912054909150806108bf5760405162461bcd60e51b815260040161055f90612a74565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a082319061090e9030906004016127b6565b60206040518083038186803b15801561092657600080fd5b505afa15801561093a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095e9190612727565b90506000805482886109709190612d87565b61097a9190612c53565b9050600083821161098b578161098d565b835b6000868152600d60209081526040808320839055338352600e909152812080549293508a929091906109c0908490612da6565b909155506109d090503389612033565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3169063a9059cbb90610a1e903390859060040161282c565b602060405180830381600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a7091906126f3565b610a7957600080fd5b336001600160a01b03167f71ec6330779eb13064fdcb040e03c78e2f9e68fb56bcf3ad120223fd1bcd421889898785604051610ab89493929190612c12565b60405180910390a25050505050505050565b60035481565b600b546001600160a01b03163314610afa5760405162461bcd60e51b815260040161055f90612a01565b6001600160a01b03919091166000908152600c60205260409020805460ff1916911515919091179055565b600a546001600160a01b031681565b60008054610b4457506000610d18565b6000547f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610ba057600080fd5b505afa158015610bb4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd8919061249f565b6001600160a01b03166320b49935306040518263ffffffff1660e01b8152600401610c0391906127b6565b60206040518083038186803b158015610c1b57600080fd5b505afa158015610c2f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c539190612727565b6040516370a0823160e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a0823190610c9f9030906004016127b6565b60206040518083038186803b158015610cb757600080fd5b505afa158015610ccb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cef9190612727565b610cf99190612c3b565b610d0b90670de0b6b3a7640000612d87565b610d159190612c53565b90505b90565b6009546001600160a01b031681565b600b546001600160a01b031681565b60065481565b6001600160a01b031660009081526001602052604090205490565b600c6020526000908152604090205460ff1681565b60046020526000908152604090205481565b600b546001600160a01b03163314610dab5760405162461bcd60e51b815260040161055f90612a01565b60c8811115610dcc5760405162461bcd60e51b815260040161055f9061292b565b600f819055610dd96120ad565b50565b600d6020526000908152604090205481565b80610ee2577f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b158015610e4c57600080fd5b505afa158015610e60573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e84919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b8152600401610eaf91906127b6565b600060405180830381600087803b158015610ec957600080fd5b505af1158015610edd573d6000803e3d6000fd5b505050505b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a0823190610f319030906004016127b6565b60206040518083038186803b158015610f4957600080fd5b505afa158015610f5d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f819190612727565b9050600080548285610f939190612d87565b610f9d9190612c53565b905060006103e860065483610fb29190612d87565b610fbc9190612c53565b9050610fc83386612033565b60405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3169063a9059cbb90611016903390859060040161282c565b602060405180830381600087803b15801561103057600080fd5b505af1158015611044573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106891906126f3565b61107157600080fd5b336001600160a01b03167ff401020088a10cade8fca19ce1c014addc7dd08d911cdd8a9de214dbfafbbe758684846040516110ae93929190612bfc565b60405180910390a25050505050565b600b546001600160a01b031633146110e75760405162461bcd60e51b815260040161055f90612a01565b600980546001600160a01b0319166001600160a01b0383161790556040517f24b6eb124e4a66ed0707b21614e0016f97d5da36704831722f30b8bd70644d35906111329083906127b6565b60405180910390a150565b6000805461114d575060006106f2565b60006040518060600160405280866001600160a01b03168152602001858152602001848152506040516020016111839190612b62565b60408051601f1981840301815282825280516020918201206000818152600d909252918120546370a0823160e01b845291935090916001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a08231906111f79030906004016127b6565b60206040518083038186803b15801561120f57600080fd5b505afa158015611223573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112479190612727565b90506000805482886112599190612d87565b6112639190612c53565b90508281116112725780611274565b825b98975050505050505050565b6040518060400160405280600b81526020016a4144582d5354414b494e4760a81b81525081565b6009546001600160a01b031633146112d15760405162461bcd60e51b815260040161055f906129db565b6112d96120ad565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a08231906113289030906004016127b6565b60206040518083038186803b15801561134057600080fd5b505afa158015611354573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113789190612727565b6001600160a01b0385166000908152600c602052604090205490915060ff166113b35760405162461bcd60e51b815260040161055f9061298c565b60408051600380825260808201909252600091602082016060803683370190505090507f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c38160008151811061141857634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600754604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561146c57600080fd5b505afa158015611480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114a4919061249f565b816001815181106114c557634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050848160028151811061150757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600854604080516350d25bcd60e01b8152905160009492909216926350d25bcd92600480840193829003018186803b15801561155c57600080fd5b505afa158015611570573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115949190612727565b90506000866001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b1580156115d157600080fd5b505afa1580156115e5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116099190612727565b61161490600a612cb9565b611629906a56da9d67d20d7709000000612c53565b90506000826116388388612d87565b6116429190612c53565b90508481106116635760405162461bcd60e51b815260040161055f90612a9b565b600754604051634401edf760e11b81526000916001600160a01b031690638803dbee9061169c908a9086908a908e904290600401612b8c565b600060405180830381600087803b1580156116b657600080fd5b505af11580156116ca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526116f29190810190612634565b905060008160008151811061171757634e487b7160e01b600052603260045260246000fd5b60200260200101519050600087600054836117329190612d87565b61173c9190612c53565b600a546001600160a01b031660009081526001602052604081205491925090821061178157600a546001600160a01b0316600090815260016020526040902054611783565b815b905080156117a157600a546117a1906001600160a01b031682612033565b8260115410156117c35760405162461bcd60e51b815260040161055f90612a54565b82601160008282546117d59190612da6565b925050819055507f0261b60f729f5f87ff22bb93906649fdb9a878e2242dd4ce7f1f03a2b7ecfcf58c8c8c84878e60005460405161181997969594939291906127ee565b60405180910390a1505050505050505050505050565b80611923577f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b15801561188d57600080fd5b505afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c5919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b81526004016118f091906127b6565b600060405180830381600087803b15801561190a57600080fd5b505af115801561191e573d6000803e3d6000fd5b505050505b336000908152600e60209081526040808320546001909252909120546119499190612da6565b8211156119685760405162461bcd60e51b815260040161055f906128fe565b6040516370a0823160e01b81526000906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a08231906119b79030906004016127b6565b60206040518083038186803b1580156119cf57600080fd5b505afa1580156119e3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a079190612727565b9050600080548285611a199190612d87565b611a239190612c53565b9050600060055442611a359190612c3b565b905060006040518060600160405280336001600160a01b0316815260200187815260200183815250604051602001611a6d9190612b62565b60408051601f1981840301815291815281516020928301206000818152600d90935291205490915015611ab25760405162461bcd60e51b815260040161055f90612b37565b6000818152600d60209081526040808320869055338352600e90915281208054889290611ae0908490612c3b565b909155505060405133907f99e851f3e691e421e8cb75d61f7ecfa09423e645915271a1813ed6c148c2a0a990611b1b90899086908890612bfc565b60405180910390a2505050505050565b610dd93382612187565b60006001600160a01b038316301415611b605760405162461bcd60e51b815260040161055f90612ac5565b33600090815260016020526040902054611b7b908390612da6565b33600090815260016020526040808220929092556001600160a01b03851681522054611ba8908390612c3b565b6001600160a01b038416600081815260016020526040908190209290925590513390600080516020612e28833981519152906105e8908690612850565b600b546001600160a01b03163314611c0f5760405162461bcd60e51b815260040161055f90612a01565b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60055481565b6008546001600160a01b031681565b7f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c381565b600b546001600160a01b03163314611c945760405162461bcd60e51b815260040161055f90612a01565b620151808110158015611caa575062278d008111155b611cc65760405162461bcd60e51b815260040161055f906129bb565b600555565b60115481565b6009546001600160a01b03163314611cfb5760405162461bcd60e51b815260040161055f906129db565b611d036120ad565b806011541015611d255760405162461bcd60e51b815260040161055f90612a54565b8060116000828254611d379190612da6565b909155505060405163a9059cbb60e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3169063a9059cbb90611d8b90600090859060040161282c565b602060405180830381600087803b158015611da557600080fd5b505af1158015611db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ddd91906126f3565b611de657600080fd5b7f9af9b85f0dc506d38e3da126c4cfb91ad80e95972cdf8de836acbcb914ce746c816040516111329190612850565b42841015611e355760405162461bcd60e51b815260040161055f90612aea565b6003546001600160a01b038816600090815260046020526040812080549192917f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918b918b918b919087611e8883612dbd565b919050558a604051602001611ea296959493929190612859565b60405160208183030381529060405280519060200120604051602001611ec992919061279b565b604051602081830303815290604052805190602001209050600060018286868660405160008152602001604052604051611f06949392919061288d565b6020604051602081039080840390855afa158015611f28573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611f5e5750886001600160a01b0316816001600160a01b0316145b611f7a5760405162461bcd60e51b815260040161055f90612a29565b6001600160a01b03808a166000818152600260209081526040808320948d1680845294909152908190208a9055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611fd5908b90612850565b60405180910390a3505050505050505050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b600e6020526000908152604090205481565b61202f8282612187565b5050565b806000546120419190612da6565b60009081556001600160a01b038316815260016020526040902054612067908290612da6565b6001600160a01b038316600081815260016020526040808220939093559151600080516020612e28833981519152906120a1908590612850565b60405180910390a35050565b62015180601054426120bf9190612da6565b11156121855742601055600f546040516370a0823160e01b81526103e891906001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906370a082319061211d9030906004016127b6565b60206040518083038186803b15801561213557600080fd5b505afa158015612149573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061216d9190612727565b6121779190612d87565b6121819190612c53565b6011555b565b7f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c36001600160a01b031663e7ba10126040518163ffffffff1660e01b815260040160206040518083038186803b1580156121e057600080fd5b505afa1580156121f4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612218919061249f565b6001600160a01b0316638bf22f17306040518263ffffffff1660e01b815260040161224391906127b6565b600060405180830381600087803b15801561225d57600080fd5b505af1158015612271573d6000803e3d6000fd5b50506040516370a0823160e01b8152600092506001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c31691506370a08231906122c49030906004016127b6565b60206040518083038186803b1580156122dc57600080fd5b505afa1580156122f0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123149190612727565b905060005460001480612325575080155b15612339576123348383612412565b612362565b6000816000548461234a9190612d87565b6123549190612c53565b90506123608482612412565b505b6040516323b872dd60e01b81526001600160a01b037f000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c316906323b872dd906123b2903390309087906004016127ca565b602060405180830381600087803b1580156123cc57600080fd5b505af11580156123e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061240491906126f3565b61240d57600080fd5b505050565b806000546124209190612c3b565b60009081556001600160a01b038316815260016020526040902054612446908290612c3b565b6001600160a01b038316600081815260016020526040808220939093559151909190600080516020612e28833981519152906120a1908590612850565b600060208284031215612494578081fd5b81356106f281612e04565b6000602082840312156124b0578081fd5b81516106f281612e04565b600080604083850312156124cd578081fd5b82356124d881612e04565b915060208301356124e881612e04565b809150509250929050565b600080600060608486031215612507578081fd5b833561251281612e04565b9250602084013561252281612e04565b929592945050506040919091013590565b600080600080600080600060e0888a03121561254d578283fd5b873561255881612e04565b9650602088013561256881612e04565b95506040880135945060608801359350608088013560ff8116811461258b578384fd5b9699959850939692959460a0840135945060c09093013592915050565b600080604083850312156125ba578182fd5b82356125c581612e04565b915060208301356124e881612e19565b600080604083850312156125e7578182fd5b82356125f281612e04565b946020939093013593505050565b600080600060608486031215612614578283fd5b833561261f81612e04565b95602085013595506040909401359392505050565b60006020808385031215612646578182fd5b825167ffffffffffffffff8082111561265d578384fd5b818501915085601f830112612670578384fd5b81518181111561268257612682612dee565b838102604051601f19603f830116810181811085821117156126a6576126a6612dee565b604052828152858101935084860182860187018a10156126c4578788fd5b8795505b838610156126e65780518552600195909501949386019386016126c8565b5098975050505050505050565b600060208284031215612704578081fd5b81516106f281612e19565b600060208284031215612720578081fd5b5035919050565b600060208284031215612738578081fd5b5051919050565b60008060408385031215612751578182fd5b8235915060208301356124e881612e19565b600080600060608486031215612777578081fd5b8335925060208401359150604084013561279081612e19565b809150509250925092565b61190160f01b81526002810192909252602282015260420190565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b03978816815295909616602086015260408501939093526060840191909152608083015260a082015260c081019190915260e00190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b93845260ff9290921660208401526040830152606082015260800190565b6000602080835283518082850152825b818110156128d7578581018301518582016040015282016128bb565b818111156128e85783604083870101525b50601f01601f1916929092016040019392505050565b602080825260139082015272494e53554646494349454e545f53484152455360681b604082015260600190565b60208082526017908201527f4441494c595f50454e414c54595f544f4f5f4c41524745000000000000000000604082015260600190565b60208082526010908201526f554e4c4f434b5f544f4f5f4541524c5960801b604082015260600190565b6020808252601590820152741513d2d15397d393d517d5d2125511531254d51151605a1b604082015260600190565b602080825260069082015265424f554e445360d01b604082015260600190565b6020808252600c908201526b2727aa2fa3aaa0a92224a0a760a11b604082015260600190565b6020808252600e908201526d4e4f545f474f5645524e414e434560901b604082015260600190565b602080825260119082015270494e56414c49445f5349474e415455524560781b604082015260600190565b6020808252600690820152654c494d49545360d01b604082015260600190565b6020808252600d908201526c1393d7d0d3d353525513515395609a1b604082015260600190565b60208082526010908201526f0929ca6aa8c8c9286928a9ca8be8288b60831b604082015260600190565b6020808252600b908201526a4241445f4144445245535360a81b604082015260600190565b60208082526010908201526f111150511312539157d156141254915160821b604082015260600190565b602080825260099082015268544f4f5f4c4152474560b81b604082015260600190565b602080825260119082015270434f4d4d49544d454e545f45584953545360781b604082015260600190565b81516001600160a01b03168152602080830151908201526040918201519181019190915260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b81811015612bdb5784516001600160a01b031683529383019391830191600101612bb6565b50506001600160a01b03969096166060850152505050608001529392505050565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b60ff91909116815260200190565b60008219821115612c4e57612c4e612dd8565b500190565b600082612c6e57634e487b7160e01b81526012600452602481fd5b500490565b80825b6001808611612c855750612cb0565b818704821115612c9757612c97612dd8565b80861615612ca457918102915b9490941c938002612c76565b94509492505050565b60006106f26000198484600082612cd2575060016106f2565b81612cdf575060006106f2565b8160018114612cf55760028114612cff57612d2c565b60019150506106f2565b60ff841115612d1057612d10612dd8565b6001841b915084821115612d2657612d26612dd8565b506106f2565b5060208310610133831016604e8410600b8410161715612d5f575081810a83811115612d5a57612d5a612dd8565b6106f2565b612d6c8484846001612c73565b808604821115612d7e57612d7e612dd8565b02949350505050565b6000816000190483118215151615612da157612da1612dd8565b500290565b600082821015612db857612db8612dd8565b500390565b6000600019821415612dd157612dd1612dd8565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381168114610dd957600080fd5b8015158114610dd957600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a8c2242f25e07400bcca16448c8ff485560366840b7295ef5c83c38b0d88857064736f6c63430008010033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c30000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d000000000000000000000000231e764b44b2c1b7ca171fa8021a24ed520cde1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001ad2d3389895d00910a09f85b12073170af43a2f0000000000000000000000001304f1b9e8eb2c328b564e7fad2c8402a5954572000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7

-----Decoded View---------------
Arg [0] : token (address): 0xADE00C28244d5CE17D72E40330B1c318cD12B7c3
Arg [1] : uni (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [2] : oracle (address): 0x231e764B44b2C1b7Ca171fa8021A24ed520Cde10
Arg [3] : guardianAddr (address): 0x0000000000000000000000000000000000000000
Arg [4] : validatorStakingWallet (address): 0x1Ad2d3389895D00910A09f85B12073170af43a2F
Arg [5] : governanceAddr (address): 0x1304F1b9E8eB2c328B564E7Fad2C8402A5954572
Arg [6] : claimToken (address): 0xdAC17F958D2ee523a2206206994597C13D831ec7

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 000000000000000000000000ade00c28244d5ce17d72e40330b1c318cd12b7c3
Arg [1] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [2] : 000000000000000000000000231e764b44b2c1b7ca171fa8021a24ed520cde10
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 0000000000000000000000001ad2d3389895d00910a09f85b12073170af43a2f
Arg [5] : 0000000000000000000000001304f1b9e8eb2c328b564e7fad2c8402a5954572
Arg [6] : 000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7


Deployed Bytecode Sourcemap

1608:13782:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1665:50;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7403:247;;;;;;:::i;:::-;;:::i;:::-;;3173:189;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;5637:26::-;;;:::i;:::-;;;;;;;:::i;1832:23::-;;;:::i;5595:38::-;;;:::i;2865:303::-;;;;;;:::i;:::-;;:::i;4719:29::-;;;:::i;:::-;;;;;;;:::i;2121:108::-;;;:::i;1719:35::-;;;:::i;:::-;;;;;;;:::i;10749:878::-;;;;;;:::i;:::-;;:::i;1984:31::-;;;:::i;8022:185::-;;;;;;:::i;:::-;;:::i;4980:24::-;;;:::i;8228:232::-;;;:::i;4953:23::-;;;:::i;5008:25::-;;;:::i;4674:39::-;;;:::i;2468:103::-;;;;;;:::i;:::-;;:::i;5165:55::-;;;;;;:::i;:::-;;:::i;2233:38::-;;;;;;:::i;:::-;;:::i;7186:214::-;;;;;;:::i;:::-;;:::i;5294:44::-;;;;;;:::i;:::-;;:::i;11632:481::-;;;;;;:::i;:::-;;:::i;7843:176::-;;;;;;:::i;:::-;;:::i;9516:495::-;;;;;;:::i;:::-;;:::i;1758:45::-;;;:::i;12375:2280::-;;;;;;:::i;:::-;;:::i;10016:728::-;;;;;;:::i;:::-;;:::i;9332:77::-;;;;;;:::i;:::-;;:::i;2576:284::-;;;;;;:::i;:::-;;:::i;7054:129::-;;;;;;:::i;:::-;;:::i;4636:34::-;;;:::i;4817:30::-;;;:::i;4914:35::-;;;:::i;7653:187::-;;;;;;:::i;:::-;;:::i;5667:26::-;;;:::i;14660:494::-;;;;;;:::i;:::-;;:::i;3516:600::-;;;;;;:::i;:::-;;:::i;3367:130::-;;;;;;:::i;:::-;;:::i;5386:45::-;;;;;;:::i;:::-;;:::i;9414:97::-;;;;;;:::i;:::-;;:::i;1665:50::-;;;;;;;;;;;;;;-1:-1:-1;;;1665:50:0;;;;:::o;7403:247::-;7469:10;;-1:-1:-1;;;;;7469:10:0;7483;7469:24;7461:51;;;;-1:-1:-1;;;7461:51:0;;;;;;;:::i;:::-;;;;;;;;;7586:4;7570:12;:20;;7562:42;;;;-1:-1:-1;;;7562:42:0;;;;;;;:::i;:::-;7609:21;:36;7403:247::o;3173:189::-;3265:10;3238:12;3257:19;;;:7;:19;;;;;;;;-1:-1:-1;;;;;3257:28:0;;;;;;;;;;:37;;;3304;3238:12;;3257:28;;3304:37;;;;3288:6;;3304:37;:::i;:::-;;;;;;;;-1:-1:-1;3353:4:0;3173:189;;;;:::o;5637:26::-;;;;:::o;1832:23::-;;;;:::o;5595:38::-;;;;:::o;2865:303::-;-1:-1:-1;;;;;2980:14:0;;2944:12;2980:14;;;:8;:14;;;;;;:23;;2997:6;;2980:23;:::i;:::-;-1:-1:-1;;;;;2963:14:0;;;;;;:8;:14;;;;;;;;:40;;;;3036:7;:13;;;;;3050:10;3036:25;;;;;;:34;;3064:6;;3036:34;:::i;:::-;-1:-1:-1;;;;;3008:13:0;;;;;;;:7;:13;;;;;;;;3022:10;3008:25;;;;;;;:62;;;;3090:12;;;;;:8;:12;;;;;:21;;3105:6;;3090:21;:::i;:::-;-1:-1:-1;;;;;3075:12:0;;;;;;;:8;:12;;;;;;;:36;;;;3121:26;;;;;;-1:-1:-1;;;;;;;;;;;3121:26:0;;;3140:6;;3121:26;:::i;:::-;;;;;;;;-1:-1:-1;3159:4:0;2865:303;;;;;;:::o;4719:29::-;;;-1:-1:-1;;;;;4719:29:0;;:::o;2121:108::-;2163:66;2121:108;:::o;1719:35::-;1752:2;1719:35;:::o;10749:878::-;10830:8;10825:71;;10840:8;-1:-1:-1;;;;;10840:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10840:41:0;;10890:4;10840:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10825:71;10929:9;10911:15;:27;10903:56;;;;-1:-1:-1;;;10903:56:0;;;;;;;:::i;:::-;10964:20;11008:77;;;;;;;;11034:10;-1:-1:-1;;;;;11008:77:0;;;;;11054:6;11008:77;;;;11073:9;11008:77;;;10997:89;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10997:89:0;;;;;;;;;10987:100;;10997:89;10987:100;;;;11092:14;11109:25;;;:11;:25;;;;;;10987:100;;-1:-1:-1;11147:13:0;11139:39;;;;-1:-1:-1;;;11139:39:0;;;;;;;:::i;:::-;11199:33;;-1:-1:-1;;;11199:33:0;;11183:13;;-1:-1:-1;;;;;11199:8:0;:18;;;;:33;;11226:4;;11199:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11183:49;;11237:18;11280:11;;11268:8;11259:6;:17;;;;:::i;:::-;11258:33;;;;:::i;:::-;11237:54;;11296:19;11334:9;11318:13;:25;:53;;11358:13;11318:53;;;11346:9;11318:53;11406:1;11378:25;;;:11;:25;;;;;;;;:29;;;11425:10;11412:24;;:12;:24;;;;;:34;;11296:75;;-1:-1:-1;11440:6:0;;11412:24;;11406:1;11412:34;;11440:6;;11412:34;:::i;:::-;;;;-1:-1:-1;11453:29:0;;-1:-1:-1;11463:10:0;11475:6;11453:9;:29::i;:::-;11495:45;;-1:-1:-1;;;11495:45:0;;-1:-1:-1;;;;;11495:8:0;:17;;;;:45;;11513:10;;11525:14;;11495:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11487:54;;;;;;11565:10;-1:-1:-1;;;;;11553:69:0;;11577:6;11585:9;11596;11607:14;11553:69;;;;;;;;;:::i;:::-;;;;;;;;10749:878;;;;;;;;:::o;1984:31::-;;;;:::o;8022:185::-;8111:10;;-1:-1:-1;;;;;8111:10:0;8125;8111:24;8103:51;;;;-1:-1:-1;;;8103:51:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8159:29:0;;;;;;;;:22;:29;;;;;:43;;-1:-1:-1;;8159:43:0;;;;;;;;;;8022:185::o;4980:24::-;;;-1:-1:-1;;;;;4980:24:0;;:::o;8228:232::-;8273:4;8288:11;;8284:30;;-1:-1:-1;8313:1:0;8306:8;;8284:30;8444:11;;8364:8;-1:-1:-1;;;;;8364:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8364:45:0;;8418:4;8364:60;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8328:33;;-1:-1:-1;;;8328:33:0;;-1:-1:-1;;;;;8328:8:0;:18;;;;:33;;8355:4;;8328:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:96;;;;:::i;:::-;8327:109;;8432:4;8327:109;:::i;:::-;8326:129;;;;:::i;:::-;8319:136;;8228:232;;:::o;4953:23::-;;;-1:-1:-1;;;;;4953:23:0;;:::o;5008:25::-;;;-1:-1:-1;;;;;5008:25:0;;:::o;4674:39::-;;;;:::o;2468:103::-;-1:-1:-1;;;;;2551:15:0;2525:12;2551:15;;;:8;:15;;;;;;;2468:103::o;5165:55::-;;;;;;;;;;;;;;;:::o;2233:38::-;;;;;;;;;;;;;:::o;7186:214::-;7246:10;;-1:-1:-1;;;;;7246:10:0;7260;7246:24;7238:51;;;;-1:-1:-1;;;7238:51:0;;;;;;;:::i;:::-;7309:3;7302;:10;;7294:46;;;;-1:-1:-1;;;7294:46:0;;;;;;;:::i;:::-;7345:26;:32;;;7382:13;:11;:13::i;:::-;7186:214;:::o;5294:44::-;;;;;;;;;;;;;:::o;11632:481::-;11698:8;11693:71;;11708:8;-1:-1:-1;;;;;11708:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;11708:41:0;;11758:4;11708:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11693:71;11787:33;;-1:-1:-1;;;11787:33:0;;11771:13;;-1:-1:-1;;;;;11787:8:0;:18;;;;:33;;11814:4;;11787:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11771:49;;11825:14;11864:11;;11852:8;11843:6;:17;;;;:::i;:::-;11842:33;;;;:::i;:::-;11825:50;;11880:19;11940:4;11915:21;;11903:9;:33;;;;:::i;:::-;11902:42;;;;:::i;:::-;11880:64;;11949:29;11959:10;11971:6;11949:9;:29::i;:::-;11991:45;;-1:-1:-1;;;11991:45:0;;-1:-1:-1;;;;;11991:8:0;:17;;;;:45;;12009:10;;12021:14;;11991:45;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11983:54;;;;;;12062:10;-1:-1:-1;;;;;12049:59:0;;12074:6;12082:9;12093:14;12049:59;;;;;;;;:::i;:::-;;;;;;;;11632:481;;;;;:::o;7843:176::-;7907:10;;-1:-1:-1;;;;;7907:10:0;7921;7907:24;7899:51;;;;-1:-1:-1;;;7899:51:0;;;;;;;:::i;:::-;7955:8;:22;;-1:-1:-1;;;;;;7955:22:0;-1:-1:-1;;;;;7955:22:0;;;;;7987:27;;;;;;7955:22;;7987:27;:::i;:::-;;;;;;;;7843:176;:::o;9516:495::-;9617:4;9632:11;;9628:30;;-1:-1:-1;9657:1:0;9650:8;;9628:30;9663:20;9707:72;;;;;;;;9733:5;-1:-1:-1;;;;;9707:72:0;;;;;9748:6;9707:72;;;;9767:9;9707:72;;;9696:84;;;;;;;;:::i;:::-;;;;-1:-1:-1;;9696:84:0;;;;;;;;;9686:95;;9696:84;9686:95;;;;9786:14;9803:25;;;:11;:25;;;;;;;-1:-1:-1;;;9849:33:0;;9686:95;;-1:-1:-1;9803:25:0;;-1:-1:-1;;;;;9849:8:0;:18;;;;:33;;9876:4;;9849:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9833:49;;9887:18;9930:11;;9918:8;9909:6;:17;;;;:::i;:::-;9908:33;;;;:::i;:::-;9887:54;;9969:9;9953:13;:25;:53;;9993:13;9953:53;;;9981:9;9953:53;9946:60;9516:495;-1:-1:-1;;;;;;;;9516:495:0:o;1758:45::-;;;;;;;;;;;;;;-1:-1:-1;;;1758:45:0;;;;:::o;12375:2280::-;12469:8;;-1:-1:-1;;;;;12469:8:0;12455:10;:22;12447:47;;;;-1:-1:-1;;;12447:47:0;;;;;;;:::i;:::-;12547:13;:11;:13::i;:::-;12771:33;;-1:-1:-1;;;12771:33:0;;12755:13;;-1:-1:-1;;;;;12771:8:0;:18;;;;:33;;12798:4;;12771:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;12860:32:0;;;;;;:22;:32;;;;;;12755:49;;-1:-1:-1;12860:32:0;;12852:66;;;;-1:-1:-1;;;12852:66:0;;;;;;;:::i;:::-;12949:16;;;12963:1;12949:16;;;;;;;;;12925:21;;12949:16;;;;;;;;;;-1:-1:-1;12949:16:0;12925:40;;12988:8;12970:4;12975:1;12970:7;;;;;;-1:-1:-1;;;12970:7:0;;;;;;;;;-1:-1:-1;;;;;12970:27:0;;;:7;;;;;;;;;;:27;;;;13012:7;;:14;;;-1:-1:-1;;;13012:14:0;;;;:7;;;;;:12;;:14;;;;;12970:7;;13012:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13002:4;13007:1;13002:7;;;;;;-1:-1:-1;;;13002:7:0;;;;;;;;;;;;;;:24;-1:-1:-1;;;;;13002:24:0;;;-1:-1:-1;;;;;13002:24:0;;;;;13041:8;13031:4;13036:1;13031:7;;;;;;-1:-1:-1;;;13031:7:0;;;;;;;;;-1:-1:-1;;;;;13031:18:0;;;:7;;;;;;;;;;:18;;;;13385:12;;:27;;;-1:-1:-1;;;13385:27:0;;;;13372:10;;13385:12;;;;;:25;;:27;;;;;;;;;;:12;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13372:40;;13622:15;13670:8;-1:-1:-1;;;;;13657:31:0;;:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13651:39;;:2;:39;:::i;:::-;13640:51;;:7;:51;:::i;:::-;13622:69;-1:-1:-1;13696:17:0;13740:5;13717:19;13622:69;13717:6;:19;:::i;:::-;13716:29;;;;:::i;:::-;13696:49;;13773:8;13758:12;:23;13750:52;;;;-1:-1:-1;;;13750:52:0;;;;;;;:::i;:::-;13831:7;;:81;;-1:-1:-1;;;13831:81:0;;13807:21;;-1:-1:-1;;;;;13831:7:0;;:32;;:81;;13864:6;;13872:12;;13886:4;;13892:2;;13896:15;;13831:81;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13831:81:0;;;;;;;;;;;;:::i;:::-;13807:105;;13973:18;13994:7;14002:1;13994:10;;;;;;-1:-1:-1;;;13994:10:0;;;;;;;;;;;;;;;13973:31;;14164:17;14216:8;14201:11;;14185:13;:27;;;;:::i;:::-;14184:40;;;;:::i;:::-;14267:9;;-1:-1:-1;;;;;14267:9:0;14229:11;14258:19;;;:8;:19;;;;;;14164:60;;-1:-1:-1;14229:11:0;14243:34;;:71;;14304:9;;-1:-1:-1;;;;;14304:9:0;14295:19;;;;:8;:19;;;;;;14243:71;;;14280:12;14243:71;14229:85;-1:-1:-1;14323:10:0;;14319:44;;14345:9;;14335:28;;-1:-1:-1;;;;;14345:9:0;14356:6;14335:9;:28::i;:::-;14502:13;14484:14;;:31;;14476:50;;;;-1:-1:-1;;;14476:50:0;;;;;;;:::i;:::-;14549:13;14531:14;;:31;;;;;;;:::i;:::-;;;;;;;;14574:76;14583:8;14593:2;14597:6;14605;14613:13;14628:8;14638:11;;14574:76;;;;;;;;;;;;:::i;:::-;;;;;;;;12375:2280;;;;;;;;;;;;:::o;10016:728::-;10078:8;10073:71;;10088:8;-1:-1:-1;;;;;10088:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;10088:41:0;;10138:4;10088:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10073:71;10205:10;10192:24;;;;:12;:24;;;;;;;;;10169:8;:20;;;;;;;:47;;10192:24;10169:47;:::i;:::-;10159:6;:57;;10151:89;;;;-1:-1:-1;;;10151:89:0;;;;;;;:::i;:::-;10261:33;;-1:-1:-1;;;10261:33:0;;10245:13;;-1:-1:-1;;;;;10261:8:0;:18;;;;:33;;10288:4;;10261:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10245:49;;10299:14;10338:11;;10326:8;10317:6;:17;;;;:::i;:::-;10316:33;;;;:::i;:::-;10299:50;;10354:14;10389:12;;10371:15;:30;;;;:::i;:::-;10354:47;;10406:20;10450:77;;;;;;;;10476:10;-1:-1:-1;;;;;10450:77:0;;;;;10496:6;10450:77;;;;10515:9;10450:77;;;10439:89;;;;;;;;:::i;:::-;;;;-1:-1:-1;;10439:89:0;;;;;;;;;10429:100;;10439:89;10429:100;;;;10542:25;;;;:11;:25;;;;;;10429:100;;-1:-1:-1;10542:30:0;10534:60;;;;-1:-1:-1;;;10534:60:0;;;;;;;:::i;:::-;10601:25;;;;:11;:25;;;;;;;;:37;;;10656:10;10643:24;;:12;:24;;;;;:34;;10671:6;;10601:25;10643:34;;10671:6;;10643:34;:::i;:::-;;;;-1:-1:-1;;10689:50:0;;10698:10;;10689:50;;;;10710:6;;10718:9;;10729;;10689:50;:::i;:::-;;;;;;;;10016:728;;;;;;:::o;9332:77::-;9374:30;9385:10;9397:6;9374:10;:30::i;2576:284::-;2637:12;-1:-1:-1;;;;;2664:19:0;;2678:4;2664:19;;2656:43;;;;-1:-1:-1;;;2656:43:0;;;;;;;:::i;:::-;2736:10;2727:20;;;;:8;:20;;;;;;:29;;2750:6;;2727:29;:::i;:::-;2713:10;2704:20;;;;:8;:20;;;;;;:52;;;;-1:-1:-1;;;;;2776:12:0;;;;;;:21;;2791:6;;2776:21;:::i;:::-;-1:-1:-1;;;;;2761:12:0;;;;;;:8;:12;;;;;;;:36;;;;2807:32;;2816:10;;-1:-1:-1;;;;;;;;;;;2807:32:0;;;2832:6;;2807:32;:::i;7054:129::-;7113:10;;-1:-1:-1;;;;;7113:10:0;7127;7113:24;7105:51;;;;-1:-1:-1;;;7105:51:0;;;;;;;:::i;:::-;7161:10;:17;;-1:-1:-1;;;;;;7161:17:0;-1:-1:-1;;;;;7161:17:0;;;;;;;;;;7054:129::o;4636:34::-;;;;:::o;4817:30::-;;;-1:-1:-1;;;;;4817:30:0;;:::o;4914:35::-;;;:::o;7653:187::-;7711:10;;-1:-1:-1;;;;;7711:10:0;7725;7711:24;7703:51;;;;-1:-1:-1;;;7703:51:0;;;;;;;:::i;:::-;7775:6;7767:4;:14;;:33;;;;;7793:7;7785:4;:15;;7767:33;7759:52;;;;-1:-1:-1;;;7759:52:0;;;;;;;:::i;:::-;7816:12;:19;7653:187::o;5667:26::-;;;;:::o;14660:494::-;14730:8;;-1:-1:-1;;;;;14730:8:0;14716:10;:22;14708:47;;;;-1:-1:-1;;;14708:47:0;;;;;;;:::i;:::-;14861:13;:11;:13::i;:::-;15011:9;14993:14;;:27;;14985:46;;;;-1:-1:-1;;;14985:46:0;;;;;;;:::i;:::-;15054:9;15036:14;;:27;;;;;;;:::i;:::-;;;;-1:-1:-1;;15076:40:0;;-1:-1:-1;;;15076:40:0;;-1:-1:-1;;;;;15076:8:0;:17;;;;:40;;15102:1;;15106:9;;15076:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15068:49;;;;;;15127:22;15139:9;15127:22;;;;;;:::i;3516:600::-;3657:15;3645:8;:27;;3637:56;;;;-1:-1:-1;;;3637:56:0;;;;;;;:::i;:::-;3763:16;;-1:-1:-1;;;;;3847:13:0;;3698:14;3847:13;;;:6;:13;;;;;:15;;3698:14;;3763:16;2163:66;;3823:5;;3830:7;;3839:6;;3847:15;3698:14;3847:15;;;:::i;:::-;;;;;3864:8;3795:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3785:89;;;;;;3725:154;;;;;;;;;:::i;:::-;;;;;;;;;;;;;3715:165;;;;;;3698:182;;3885:24;3912:26;3922:6;3930:1;3933;3936;3912:26;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3912:26:0;;-1:-1:-1;;3912:26:0;;;-1:-1:-1;;;;;;;3951:30:0;;;;;;:59;;;4005:5;-1:-1:-1;;;;;3985:25:0;:16;-1:-1:-1;;;;;3985:25:0;;3951:59;3943:89;;;;-1:-1:-1;;;3943:89:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;4037:14:0;;;;;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;;:32;;;4079;;;;;4063:6;;4079:32;:::i;:::-;;;;;;;;3516:600;;;;;;;;;:::o;3367:130::-;-1:-1:-1;;;;;3469:14:0;;;3441;3469;;;:7;:14;;;;;;;;:23;;;;;;;;;;;;;3367:130::o;5386:45::-;;;;;;;;;;;;;:::o;9414:97::-;9477:29;9488:9;9499:6;9477:10;:29::i;:::-;9414:97;;:::o;4415:192::-;4504:6;4490:11;;:20;;;;:::i;:::-;4476:11;:34;;;-1:-1:-1;;;;;4533:15:0;;;;:8;:15;;;;;;:24;;4551:6;;4533:24;:::i;:::-;-1:-1:-1;;;;;4515:15:0;;;;;;:8;:15;;;;;;:42;;;;4567:35;;-1:-1:-1;;;;;;;;;;;4567:35:0;;;4595:6;;4567:35;:::i;:::-;;;;;;;;4415:192;;:::o;15159:228::-;15235:8;15218:14;;15200:15;:32;;;;:::i;:::-;:43;15196:187;;;15268:15;15251:14;:32;15343:26;;15307:33;;-1:-1:-1;;;15307:33:0;;15373:4;;15343:26;-1:-1:-1;;;;;15307:8:0;:18;;;;:33;;15334:4;;15307:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:62;;;;:::i;:::-;15306:71;;;;:::i;:::-;15289:14;:88;15196:187;15159:228::o;8465:862::-;8738:8;-1:-1:-1;;;;;8738:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;8738:41:0;;8788:4;8738:56;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;8817:33:0;;-1:-1:-1;;;8817:33:0;;8801:13;;-1:-1:-1;;;;;;8817:8:0;:18;;-1:-1:-1;8817:18:0;;:33;;8844:4;;8817:33;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8801:49;;8983:11;;8998:1;8983:16;:33;;;-1:-1:-1;9003:13:0;;8983:33;8979:187;;;9024:28;9034:9;9045:6;9024:9;:28::i;:::-;8979:187;;;9070:17;9115:8;9100:11;;9091:6;:20;;;;:::i;:::-;9090:33;;;;:::i;:::-;9070:53;;9129:31;9139:9;9150;9129;:31::i;:::-;8979:187;;9178:56;;-1:-1:-1;;;9178:56:0;;-1:-1:-1;;;;;9178:8:0;:21;;;;:56;;9200:10;;9220:4;;9227:6;;9178:56;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9170:65;;;;;;8465:862;;;:::o;4132:280::-;4221:6;4207:11;;:20;;;;:::i;:::-;4193:11;:34;;;-1:-1:-1;;;;;4250:15:0;;;;:8;:15;;;;;;:24;;4268:6;;4250:24;:::i;:::-;-1:-1:-1;;;;;4232:15:0;;;;;;:8;:15;;;;;;:42;;;;4372:35;;4232:15;;;-1:-1:-1;;;;;;;;;;;4372:35:0;;;4400:6;;4372:35;:::i;14:259:1:-;;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:33;237:5;210:33;:::i;278:263::-;;401:2;389:9;380:7;376:23;372:32;369:2;;;422:6;414;407:22;369:2;459:9;453:16;478:33;505:5;478:33;:::i;546:402::-;;;675:2;663:9;654:7;650:23;646:32;643:2;;;696:6;688;681:22;643:2;740:9;727:23;759:33;786:5;759:33;:::i;:::-;811:5;-1:-1:-1;868:2:1;853:18;;840:32;881:35;840:32;881:35;:::i;:::-;935:7;925:17;;;633:315;;;;;:::o;953:470::-;;;;1099:2;1087:9;1078:7;1074:23;1070:32;1067:2;;;1120:6;1112;1105:22;1067:2;1164:9;1151:23;1183:33;1210:5;1183:33;:::i;:::-;1235:5;-1:-1:-1;1292:2:1;1277:18;;1264:32;1305:35;1264:32;1305:35;:::i;:::-;1057:366;;1359:7;;-1:-1:-1;;;1413:2:1;1398:18;;;;1385:32;;1057:366::o;1428:853::-;;;;;;;;1640:3;1628:9;1619:7;1615:23;1611:33;1608:2;;;1662:6;1654;1647:22;1608:2;1706:9;1693:23;1725:33;1752:5;1725:33;:::i;:::-;1777:5;-1:-1:-1;1834:2:1;1819:18;;1806:32;1847:35;1806:32;1847:35;:::i;:::-;1901:7;-1:-1:-1;1955:2:1;1940:18;;1927:32;;-1:-1:-1;2006:2:1;1991:18;;1978:32;;-1:-1:-1;2062:3:1;2047:19;;2034:33;2111:4;2098:18;;2086:31;;2076:2;;2136:6;2128;2121:22;2076:2;1598:683;;;;-1:-1:-1;1598:683:1;;;;2164:7;2218:3;2203:19;;2190:33;;-1:-1:-1;2270:3:1;2255:19;;;2242:33;;1598:683;-1:-1:-1;;1598:683:1:o;2286:396::-;;;2412:2;2400:9;2391:7;2387:23;2383:32;2380:2;;;2433:6;2425;2418:22;2380:2;2477:9;2464:23;2496:33;2523:5;2496:33;:::i;:::-;2548:5;-1:-1:-1;2605:2:1;2590:18;;2577:32;2618;2577;2618;:::i;2687:327::-;;;2816:2;2804:9;2795:7;2791:23;2787:32;2784:2;;;2837:6;2829;2822:22;2784:2;2881:9;2868:23;2900:33;2927:5;2900:33;:::i;:::-;2952:5;3004:2;2989:18;;;;2976:32;;-1:-1:-1;;;2774:240:1:o;3019:395::-;;;;3165:2;3153:9;3144:7;3140:23;3136:32;3133:2;;;3186:6;3178;3171:22;3133:2;3230:9;3217:23;3249:33;3276:5;3249:33;:::i;:::-;3301:5;3353:2;3338:18;;3325:32;;-1:-1:-1;3404:2:1;3389:18;;;3376:32;;3123:291;-1:-1:-1;;;3123:291:1:o;3419:1162::-;;3545:2;3588;3576:9;3567:7;3563:23;3559:32;3556:2;;;3609:6;3601;3594:22;3556:2;3647:9;3641:16;3676:18;3717:2;3709:6;3706:14;3703:2;;;3738:6;3730;3723:22;3703:2;3781:6;3770:9;3766:22;3756:32;;3826:7;3819:4;3815:2;3811:13;3807:27;3797:2;;3853:6;3845;3838:22;3797:2;3887;3881:9;3909:2;3905;3902:10;3899:2;;;3915:18;;:::i;:::-;3962:2;3958;3954:11;3994:2;3988:9;4057:2;4053:7;4048:2;4044;4040:11;4036:25;4028:6;4024:38;4112:6;4100:10;4097:22;4092:2;4080:10;4077:18;4074:46;4071:2;;;4123:18;;:::i;:::-;4159:2;4152:22;4209:18;;;4243:15;;;;-1:-1:-1;4278:11:1;;;4308;;;4304:20;;4301:33;-1:-1:-1;4298:2:1;;;4352:6;4344;4337:22;4298:2;4379:6;4370:15;;4394:156;4408:2;4405:1;4402:9;4394:156;;;4465:10;;4453:23;;4426:1;4419:9;;;;;4496:12;;;;4528;;4394:156;;;-1:-1:-1;4569:6:1;3525:1056;-1:-1:-1;;;;;;;;3525:1056:1:o;4586:257::-;;4706:2;4694:9;4685:7;4681:23;4677:32;4674:2;;;4727:6;4719;4712:22;4674:2;4764:9;4758:16;4783:30;4807:5;4783:30;:::i;4848:190::-;;4960:2;4948:9;4939:7;4935:23;4931:32;4928:2;;;4981:6;4973;4966:22;4928:2;-1:-1:-1;5009:23:1;;4918:120;-1:-1:-1;4918:120:1:o;5530:194::-;;5653:2;5641:9;5632:7;5628:23;5624:32;5621:2;;;5674:6;5666;5659:22;5621:2;-1:-1:-1;5702:16:1;;5611:113;-1:-1:-1;5611:113:1:o;5729:321::-;;;5855:2;5843:9;5834:7;5830:23;5826:32;5823:2;;;5876:6;5868;5861:22;5823:2;5917:9;5904:23;5894:33;;5977:2;5966:9;5962:18;5949:32;5990:30;6014:5;5990:30;:::i;6055:389::-;;;;6198:2;6186:9;6177:7;6173:23;6169:32;6166:2;;;6219:6;6211;6204:22;6166:2;6260:9;6247:23;6237:33;;6317:2;6306:9;6302:18;6289:32;6279:42;;6371:2;6360:9;6356:18;6343:32;6384:30;6408:5;6384:30;:::i;:::-;6433:5;6423:15;;;6156:288;;;;;:::o;6449:392::-;-1:-1:-1;;;6707:27:1;;6759:1;6750:11;;6743:27;;;;6795:2;6786:12;;6779:28;6832:2;6823:12;;6697:144::o;6846:203::-;-1:-1:-1;;;;;7010:32:1;;;;6992:51;;6980:2;6965:18;;6947:102::o;7054:375::-;-1:-1:-1;;;;;7312:15:1;;;7294:34;;7364:15;;;;7359:2;7344:18;;7337:43;7411:2;7396:18;;7389:34;;;;7244:2;7229:18;;7211:218::o;7434:663::-;-1:-1:-1;;;;;7805:15:1;;;7787:34;;7857:15;;;;7852:2;7837:18;;7830:43;7904:2;7889:18;;7882:34;;;;7947:2;7932:18;;7925:34;;;;7990:3;7975:19;;7968:35;7767:3;8019:19;;8012:35;8078:3;8063:19;;8056:35;;;;7736:3;7721:19;;7703:394::o;8102:274::-;-1:-1:-1;;;;;8294:32:1;;;;8276:51;;8358:2;8343:18;;8336:34;8264:2;8249:18;;8231:145::o;8381:187::-;8546:14;;8539:22;8521:41;;8509:2;8494:18;;8476:92::o;8573:177::-;8719:25;;;8707:2;8692:18;;8674:76::o;8755:591::-;9042:25;;;-1:-1:-1;;;;;9141:15:1;;;9136:2;9121:18;;9114:43;9193:15;;;;9188:2;9173:18;;9166:43;9240:2;9225:18;;9218:34;9283:3;9268:19;;9261:35;;;;9094:3;9312:19;;9305:35;9029:3;9014:19;;8996:350::o;9351:398::-;9578:25;;;9651:4;9639:17;;;;9634:2;9619:18;;9612:45;9688:2;9673:18;;9666:34;9731:2;9716:18;;9709:34;9565:3;9550:19;;9532:217::o;10434:603::-;;10575:2;10604;10593:9;10586:21;10636:6;10630:13;10679:6;10674:2;10663:9;10659:18;10652:34;10704:4;10717:140;10731:6;10728:1;10725:13;10717:140;;;10826:14;;;10822:23;;10816:30;10792:17;;;10811:2;10788:26;10781:66;10746:10;;10717:140;;;10875:6;10872:1;10869:13;10866:2;;;10945:4;10940:2;10931:6;10920:9;10916:22;10912:31;10905:45;10866:2;-1:-1:-1;11021:2:1;11000:15;-1:-1:-1;;10996:29:1;10981:45;;;;11028:2;10977:54;;10555:482;-1:-1:-1;;;10555:482:1:o;11042:343::-;11244:2;11226:21;;;11283:2;11263:18;;;11256:30;-1:-1:-1;;;11317:2:1;11302:18;;11295:49;11376:2;11361:18;;11216:169::o;11390:347::-;11592:2;11574:21;;;11631:2;11611:18;;;11604:30;11670:25;11665:2;11650:18;;11643:53;11728:2;11713:18;;11564:173::o;11742:340::-;11944:2;11926:21;;;11983:2;11963:18;;;11956:30;-1:-1:-1;;;12017:2:1;12002:18;;11995:46;12073:2;12058:18;;11916:166::o;12087:345::-;12289:2;12271:21;;;12328:2;12308:18;;;12301:30;-1:-1:-1;;;12362:2:1;12347:18;;12340:51;12423:2;12408:18;;12261:171::o;12437:329::-;12639:2;12621:21;;;12678:1;12658:18;;;12651:29;-1:-1:-1;;;12711:2:1;12696:18;;12689:36;12757:2;12742:18;;12611:155::o;12771:336::-;12973:2;12955:21;;;13012:2;12992:18;;;12985:30;-1:-1:-1;;;13046:2:1;13031:18;;13024:42;13098:2;13083:18;;12945:162::o;13112:338::-;13314:2;13296:21;;;13353:2;13333:18;;;13326:30;-1:-1:-1;;;13387:2:1;13372:18;;13365:44;13441:2;13426:18;;13286:164::o;13455:341::-;13657:2;13639:21;;;13696:2;13676:18;;;13669:30;-1:-1:-1;;;13730:2:1;13715:18;;13708:47;13787:2;13772:18;;13629:167::o;13801:329::-;14003:2;13985:21;;;14042:1;14022:18;;;14015:29;-1:-1:-1;;;14075:2:1;14060:18;;14053:36;14121:2;14106:18;;13975:155::o;14135:337::-;14337:2;14319:21;;;14376:2;14356:18;;;14349:30;-1:-1:-1;;;14410:2:1;14395:18;;14388:43;14463:2;14448:18;;14309:163::o;14477:340::-;14679:2;14661:21;;;14718:2;14698:18;;;14691:30;-1:-1:-1;;;14752:2:1;14737:18;;14730:46;14808:2;14793:18;;14651:166::o;14822:335::-;15024:2;15006:21;;;15063:2;15043:18;;;15036:30;-1:-1:-1;;;15097:2:1;15082:18;;15075:41;15148:2;15133:18;;14996:161::o;15162:340::-;15364:2;15346:21;;;15403:2;15383:18;;;15376:30;-1:-1:-1;;;15437:2:1;15422:18;;15415:46;15493:2;15478:18;;15336:166::o;15507:332::-;15709:2;15691:21;;;15748:1;15728:18;;;15721:29;-1:-1:-1;;;15781:2:1;15766:18;;15759:39;15830:2;15815:18;;15681:158::o;15844:341::-;16046:2;16028:21;;;16085:2;16065:18;;;16058:30;-1:-1:-1;;;16119:2:1;16104:18;;16097:47;16176:2;16161:18;;16018:167::o;16190:402::-;16424:13;;-1:-1:-1;;;;;16420:39:1;16402:58;;16516:4;16504:17;;;16498:24;16476:20;;;16469:54;16579:4;16567:17;;;16561:24;16539:20;;;16532:54;;;;16390:2;16375:18;;16357:235::o;16779:975::-;;17081:3;17070:9;17066:19;17112:6;17101:9;17094:25;17138:2;17176:6;17171:2;17160:9;17156:18;17149:34;17219:3;17214:2;17203:9;17199:18;17192:31;17243:6;17278;17272:13;17309:6;17301;17294:22;17347:3;17336:9;17332:19;17325:26;;17386:2;17378:6;17374:15;17360:29;;17407:4;17420:195;17434:6;17431:1;17428:13;17420:195;;;17499:13;;-1:-1:-1;;;;;17495:39:1;17483:52;;17590:15;;;;17555:12;;;;17531:1;17449:9;17420:195;;;-1:-1:-1;;;;;;;17671:32:1;;;;17666:2;17651:18;;17644:60;-1:-1:-1;;;17735:3:1;17720:19;17713:35;17632:3;17042:712;-1:-1:-1;;;17042:712:1:o;17759:319::-;17961:25;;;18017:2;18002:18;;17995:34;;;;18060:2;18045:18;;18038:34;17949:2;17934:18;;17916:162::o;18083:391::-;18314:25;;;18370:2;18355:18;;18348:34;;;;18413:2;18398:18;;18391:34;18456:2;18441:18;;18434:34;18301:3;18286:19;;18268:206::o;18479:184::-;18651:4;18639:17;;;;18621:36;;18609:2;18594:18;;18576:87::o;18668:128::-;;18739:1;18735:6;18732:1;18729:13;18726:2;;;18745:18;;:::i;:::-;-1:-1:-1;18781:9:1;;18716:80::o;18801:217::-;;18867:1;18857:2;;-1:-1:-1;;;18892:31:1;;18946:4;18943:1;18936:15;18974:4;18899:1;18964:15;18857:2;-1:-1:-1;19003:9:1;;18847:171::o;19023:453::-;19119:6;19142:5;19156:314;19205:1;19242:2;19232:8;19229:16;19219:2;;19249:5;;;19219:2;19290:4;19285:3;19281:14;19275:4;19272:24;19269:2;;;19299:18;;:::i;:::-;19349:2;19339:8;19335:17;19332:2;;;19364:16;;;;19332:2;19443:17;;;;;19403:15;;19156:314;;;19100:376;;;;;;;:::o;19481:139::-;;19570:44;-1:-1:-1;;19597:8:1;19591:4;19625:922;19709:8;19699:2;;-1:-1:-1;19750:1:1;19764:5;;19699:2;19798:4;19788:2;;-1:-1:-1;19835:1:1;19849:5;;19788:2;19880:4;19898:1;19893:59;;;;19966:1;19961:183;;;;19873:271;;19893:59;19923:1;19914:10;;19937:5;;;19961:183;19998:3;19988:8;19985:17;19982:2;;;20005:18;;:::i;:::-;20061:1;20051:8;20047:16;20038:25;;20089:3;20082:5;20079:14;20076:2;;;20096:18;;:::i;:::-;20129:5;;;19873:271;;20228:2;20218:8;20215:16;20209:3;20203:4;20200:13;20196:36;20190:2;20180:8;20177:16;20172:2;20166:4;20163:12;20159:35;20156:77;20153:2;;;-1:-1:-1;20265:19:1;;;20300:14;;;20297:2;;;20317:18;;:::i;:::-;20350:5;;20153:2;20397:42;20435:3;20425:8;20419:4;20416:1;20397:42;:::i;:::-;20472:6;20467:3;20463:16;20454:7;20451:29;20448:2;;;20483:18;;:::i;:::-;20521:20;;19689:858;-1:-1:-1;;;;19689:858:1:o;20552:168::-;;20658:1;20654;20650:6;20646:14;20643:1;20640:21;20635:1;20628:9;20621:17;20617:45;20614:2;;;20665:18;;:::i;:::-;-1:-1:-1;20705:9:1;;20604:116::o;20725:125::-;;20793:1;20790;20787:8;20784:2;;;20798:18;;:::i;:::-;-1:-1:-1;20835:9:1;;20774:76::o;20855:135::-;;-1:-1:-1;;20915:17:1;;20912:2;;;20935:18;;:::i;:::-;-1:-1:-1;20982:1:1;20971:13;;20902:88::o;20995:127::-;21056:10;21051:3;21047:20;21044:1;21037:31;21087:4;21084:1;21077:15;21111:4;21108:1;21101:15;21127:127;21188:10;21183:3;21179:20;21176:1;21169:31;21219:4;21216:1;21209:15;21243:4;21240:1;21233:15;21259:133;-1:-1:-1;;;;;21336:31:1;;21326:42;;21316:2;;21382:1;21379;21372:12;21397:120;21485:5;21478:13;21471:21;21464:5;21461:32;21451:2;;21507:1;21504;21497:12

Swarm Source

ipfs://a8c2242f25e07400bcca16448c8ff485560366840b7295ef5c83c38b0d888570

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.