ERC-20
Source Code
Overview
Max Total Supply
50,000,000,000,000 PUMP
Holders
35
Market
Onchain Market Cap
-
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 4 Decimals)
Balance
208,198,321,899.1265 PUMPValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
| # | Exchange | Pair | Price | 24H Volume | % Volume |
|---|
Contract Name:
Pump
Compiler Version
v0.7.4+commit.3f05b770
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-12-14
*/
// t.me/green_candle_pump
// SPDX-License-Identifier: unlicensed
pragma solidity ^0.7.4;
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
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 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
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 c = a / b;
return c;
}
}
library SafeMathInt {
int256 private constant MIN_INT256 = int256(1) << 255;
int256 private constant MAX_INT256 = ~(int256(1) << 255);
function mul(int256 a, int256 b) internal pure returns (int256) {
int256 c = a * b;
require(c != MIN_INT256 || (a & MIN_INT256) != (b & MIN_INT256));
require((b == 0) || (c / b == a));
return c;
}
function div(int256 a, int256 b) internal pure returns (int256) {
require(b != -1 || a != MIN_INT256);
return a / b;
}
function sub(int256 a, int256 b) internal pure returns (int256) {
int256 c = a - b;
require((b >= 0 && c <= a) || (b < 0 && c > a));
return c;
}
function add(int256 a, int256 b) internal pure returns (int256) {
int256 c = a + b;
require((b >= 0 && c >= a) || (b < 0 && c < a));
return c;
}
function abs(int256 a) internal pure returns (int256) {
require(a != MIN_INT256);
return a < 0 ? -a : a;
}
}
/**
* BEP20 standard interface.
*/
interface IBEP20 {
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 Auth {
address internal owner;
mapping (address => bool) internal authorizations;
constructor(address _owner) {
owner = _owner;
authorizations[_owner] = true;
}
modifier onlyOwner() {
require(isOwner(msg.sender), "!OWNER"); _;
}
modifier authorized() {
require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
}
function authorize(address adr) public onlyOwner {
authorizations[adr] = true;
}
function unauthorize(address adr) public onlyOwner {
authorizations[adr] = false;
}
function isOwner(address account) public view returns (bool) {
return account == owner;
}
function isAuthorized(address adr) public view returns (bool) {
return authorizations[adr];
}
function transferOwnership(address payable adr) public onlyOwner {
owner = adr;
authorizations[adr] = true;
emit OwnershipTransferred(adr);
}
event OwnershipTransferred(address owner);
}
interface IDEXFactory {
function createPair(address tokenA, address tokenB) external returns (address pair);
}
interface InterfaceLP {
function sync() external;
}
interface IDEXRouter {
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 swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint amountIn,
uint amountOutMin,
address[] calldata path,
address to,
uint deadline
) external;
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;
}
interface IDividendDistributor {
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
function setShare(address shareholder, uint256 amount) external;
function deposit() external payable;
function process(uint256 gas) external;
}
contract DividendDistributor is IDividendDistributor {
using SafeMath for uint256;
address _token;
struct Share {
uint256 amount;
uint256 totalExcluded;
uint256 totalRealised;
}
IBEP20 RWRD = IBEP20(0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2);
address WBNB = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
IDEXRouter router;
address[] shareholders;
mapping (address => uint256) shareholderIndexes;
mapping (address => uint256) shareholderClaims;
mapping (address => Share) public shares;
uint256 public totalShares;
uint256 public totalDividends;
uint256 public totalDistributed;
uint256 public dividendsPerShare;
uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;
uint256 public minPeriod = 45 * 60;
uint256 public minDistribution = 1 * (10 ** 8);
uint256 currentIndex;
bool initialized;
modifier initialization() {
require(!initialized);
_;
initialized = true;
}
modifier onlyToken() {
require(msg.sender == _token); _;
}
constructor (address _router) {
router = _router != address(0)
? IDEXRouter(_router)
: IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
_token = msg.sender;
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
minPeriod = _minPeriod;
minDistribution = _minDistribution;
}
function setShare(address shareholder, uint256 amount) external override onlyToken {
if(shares[shareholder].amount > 0){
distributeDividend(shareholder);
}
if(amount > 0 && shares[shareholder].amount == 0){
addShareholder(shareholder);
}else if(amount == 0 && shares[shareholder].amount > 0){
removeShareholder(shareholder);
}
totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
shares[shareholder].amount = amount;
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
function deposit() external payable override onlyToken {
uint256 balanceBefore = RWRD.balanceOf(address(this));
address[] memory path = new address[](2);
path[0] = WBNB;
path[1] = address(RWRD);
router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
0,
path,
address(this),
block.timestamp
);
uint256 amount = RWRD.balanceOf(address(this)).sub(balanceBefore);
totalDividends = totalDividends.add(amount);
dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
}
function process(uint256 gas) external override onlyToken {
uint256 shareholderCount = shareholders.length;
if(shareholderCount == 0) { return; }
uint256 gasUsed = 0;
uint256 gasLeft = gasleft();
uint256 iterations = 0;
while(gasUsed < gas && iterations < shareholderCount) {
if(currentIndex >= shareholderCount){
currentIndex = 0;
}
if(shouldDistribute(shareholders[currentIndex])){
distributeDividend(shareholders[currentIndex]);
}
gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
gasLeft = gasleft();
currentIndex++;
iterations++;
}
}
function shouldDistribute(address shareholder) internal view returns (bool) {
return shareholderClaims[shareholder] + minPeriod < block.timestamp
&& getUnpaidEarnings(shareholder) > minDistribution;
}
function distributeDividend(address shareholder) internal {
if(shares[shareholder].amount == 0){ return; }
uint256 amount = getUnpaidEarnings(shareholder);
if(amount > 0){
totalDistributed = totalDistributed.add(amount);
RWRD.transfer(shareholder, amount);
shareholderClaims[shareholder] = block.timestamp;
shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
}
}
function claimDividend() external {
distributeDividend(msg.sender);
}
function getUnpaidEarnings(address shareholder) public view returns (uint256) {
if(shares[shareholder].amount == 0){ return 0; }
uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;
if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }
return shareholderTotalDividends.sub(shareholderTotalExcluded);
}
function getCumulativeDividends(uint256 share) internal view returns (uint256) {
return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
}
function addShareholder(address shareholder) internal {
shareholderIndexes[shareholder] = shareholders.length;
shareholders.push(shareholder);
}
function removeShareholder(address shareholder) internal {
shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
shareholders.pop();
}
}
contract Pump is IBEP20, Auth {
using SafeMath for uint256;
using SafeMathInt for int256;
address WBNB = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
address DEAD = 0x000000000000000000000000000000000000dEaD;
address ZERO = 0x0000000000000000000000000000000000000000;
string constant _name = "Green Candle";
string constant _symbol = "PUMP";
uint8 constant _decimals = 4;
//mapping (address => uint256) _balances;
mapping (address => uint256) _rBalance;
mapping (address => mapping (address => uint256)) _allowances;
mapping (address => bool) public isFeeExempt;
mapping (address => bool) public isTxLimitExempt;
mapping (address => bool) public isTimelockExempt;
mapping (address => bool) public isDividendExempt;
uint256 public liquidityFee = 1;
uint256 public reflectionFee = 0;
uint256 public marketingFee = 5;
uint256 public devFee = 0;
uint256 public totalFee = marketingFee + reflectionFee + liquidityFee + devFee;
uint256 public feeDenominator = 100;
// Anti-Bot v2
uint256 public maxRoomRent = 8000000000;
bool public hotelCaliforniaMode = false;
mapping (address => bool) public isHouseguest;
uint256 public deadBlocks = 2;
uint256 public launchedAt = 0;
uint256 public sellMultiplier = 100;
address public autoLiquidityReceiver;
address public marketingFeeReceiver;
address public devFeeReceiver;
uint256 targetLiquidity = 20;
uint256 targetLiquidityDenominator = 100;
IDEXRouter public router;
address public pair;
InterfaceLP public pairContract;
bool public tradingOpen = false;
DividendDistributor public distributor;
uint256 distributorGas = 500000;
bool public buyCooldownEnabled = false;
uint8 public cooldownTimerInterval = 5;
mapping (address => uint) private cooldownTimer;
bool public swapEnabled = false;
bool inSwap;
modifier swapping() { inSwap = true; _; inSwap = false; }
address public master;
modifier onlyMaster() {
require(msg.sender == master || isOwner(msg.sender));
_;
}
event LogRebase(uint256 indexed epoch, uint256 totalSupply);
event CaliforniaCheckin(address guest, uint256 rentPaid);
uint256 private constant INITIAL_FRAGMENTS_SUPPLY = 10**15 * 10**_decimals;
uint256 public swapThreshold = rSupply * 10 / 10000;
uint256 public rebase_count = 0;
uint256 public rate;
uint256 public _totalSupply;
uint256 private constant MAX_UINT256 = ~uint256(0);
uint256 private constant MAX_SUPPLY = ~uint128(0);
uint256 private constant rSupply = MAX_UINT256 - (MAX_UINT256 % INITIAL_FRAGMENTS_SUPPLY);
// Max wallet & Transaction
uint256 public _maxTxAmount = rSupply.div(100).mul(2);
uint256 public _maxWalletToken = rSupply.div(100).mul(3);
function rebase_percentage(uint256 _percentage_base1000, bool reduce) public onlyOwner returns (uint256 newSupply){
if(reduce){
newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)).mul(-1));
} else{
newSupply = rebase(0,int(_totalSupply.div(1000).mul(_percentage_base1000)));
}
}
// Sauce
function rebase(uint256 epoch, int256 supplyDelta) public onlyMaster returns (uint256) {
rebase_count++;
if(epoch == 0){
epoch = rebase_count;
}
require(!inSwap, "Try again");
if (supplyDelta == 0) {
emit LogRebase(epoch, _totalSupply);
return _totalSupply;
}
if (supplyDelta < 0) {
_totalSupply = _totalSupply.sub(uint256(-supplyDelta));
} else {
_totalSupply = _totalSupply.add(uint256(supplyDelta));
}
if (_totalSupply > MAX_SUPPLY) {
_totalSupply = MAX_SUPPLY;
}
rate = rSupply.div(_totalSupply);
pairContract.sync();
emit LogRebase(epoch, _totalSupply);
return _totalSupply;
}
constructor () Auth(msg.sender) {
router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
pair = IDEXFactory(router.factory()).createPair(WBNB, address(this));
_allowances[address(this)][address(router)] = uint256(-1);
pairContract = InterfaceLP(pair);
_totalSupply = INITIAL_FRAGMENTS_SUPPLY;
rate = rSupply.div(_totalSupply);
distributor = new DividendDistributor(address(router));
isFeeExempt[msg.sender] = true;
isTxLimitExempt[msg.sender] = true;
isTimelockExempt[msg.sender] = true;
isTimelockExempt[DEAD] = true;
isTimelockExempt[address(this)] = true;
isDividendExempt[pair] = true;
isDividendExempt[address(this)] = true;
isDividendExempt[DEAD] = true;
autoLiquidityReceiver = msg.sender;
marketingFeeReceiver = 0xfD140B1685A6285e4bC15701E7E78E2BEFECE1C5;
devFeeReceiver = 0x81909d8964d491e14CAf79dca6383D31C5Ab8db4;
_rBalance[msg.sender] = rSupply;
emit Transfer(address(0), msg.sender, _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 _rBalance[account].div(rate);
}
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, uint256(-1));
}
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] != uint256(-1)){
_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) {
if(inSwap){ return _basicTransfer(sender, recipient, amount); }
if(!authorizations[sender] && !authorizations[recipient]){
require(tradingOpen,"Trading not open yet");
}
uint256 rAmount = amount.mul(rate);
if (!authorizations[sender] && recipient != address(this) && recipient != address(DEAD) && recipient != pair && recipient != marketingFeeReceiver && recipient != devFeeReceiver && recipient != autoLiquidityReceiver){
uint256 heldTokens = balanceOf(recipient);
require((heldTokens + rAmount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");}
if (sender == pair &&
buyCooldownEnabled &&
!isTimelockExempt[recipient]) {
require(cooldownTimer[recipient] < block.timestamp,"buy Cooldown exists");
cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
}
// plz ser, dont snipe with a bot
if(hotelCaliforniaMode){
require(!isHouseguest[sender],"Bots cant sell");
if(tx.gasprice > maxRoomRent && sender == pair){
isHouseguest[recipient] = true;
emit CaliforniaCheckin(recipient, tx.gasprice);
}
}
// Checks max transaction limit
checkTxLimit(sender, rAmount);
if(shouldSwapBack()){ swapBack(); }
//Exchange tokens
_rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");
uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? rAmount : takeFee(sender, rAmount,(recipient == pair));
_rBalance[recipient] = _rBalance[recipient].add(amountReceived);
// Dividend tracker
if(!isDividendExempt[sender]) {
try distributor.setShare(sender, balanceOf(sender)) {} catch {}
}
if(!isDividendExempt[recipient]) {
try distributor.setShare(recipient, balanceOf(recipient)) {} catch {}
}
try distributor.process(distributorGas) {} catch {}
emit Transfer(sender, recipient, amountReceived.div(rate));
return true;
}
// Changed
function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
uint256 rAmount = amount.mul(rate);
_rBalance[sender] = _rBalance[sender].sub(rAmount, "Insufficient Balance");
_rBalance[recipient] = _rBalance[recipient].add(rAmount);
emit Transfer(sender, recipient, rAmount.div(rate));
return true;
}
function checkTxLimit(address sender, uint256 rAmount) internal view {
require(rAmount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
}
function shouldTakeFee(address sender) internal view returns (bool) {
return !isFeeExempt[sender];
}
function takeFee(address sender, uint256 rAmount, bool isSell) internal returns (uint256) {
uint256 multiplier = 100;
if(isSell){
multiplier = sellMultiplier;
}
uint256 feeAmount = rAmount.div(feeDenominator * 100).mul(totalFee).mul(multiplier);
if(!isSell && (launchedAt + deadBlocks) > block.number){
feeAmount = rAmount.div(100).mul(99);
}
_rBalance[address(this)] = _rBalance[address(this)].add(feeAmount);
emit Transfer(sender, address(this), feeAmount.div(rate));
return rAmount.sub(feeAmount);
}
function shouldSwapBack() internal view returns (bool) {
return msg.sender != pair
&& !inSwap
&& swapEnabled
&& _rBalance[address(this)] >= swapThreshold;
}
function clearStuckBalance(uint256 amountPercentage) external authorized {
uint256 amountBNB = address(this).balance;
payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
}
function clearStuckBalance_sender(uint256 amountPercentage) external authorized {
uint256 amountBNB = address(this).balance;
payable(msg.sender).transfer(amountBNB * amountPercentage / 100);
}
function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
sellMultiplier = Multiplier;
}
// switch Trading
function tradingStatus(bool _status, uint256 _deadBlocks) public onlyOwner {
tradingOpen = _status;
if(tradingOpen && launchedAt == 0){
launchedAt = block.number;
deadBlocks = _deadBlocks;
}
}
function launchStatus(uint256 _launchblock) public onlyOwner {
launchedAt = _launchblock;
}
// lobby manager
function enable_hotel_CaliforniaMode(bool _status) public onlyOwner {
hotelCaliforniaMode = _status;
}
function set_max_roomrent(uint256 _rent_withoutdecimal) public onlyOwner {
maxRoomRent = _rent_withoutdecimal * 10**9;
}
function manage_houseguests(address[] calldata addresses, bool status) public onlyOwner {
for (uint256 i; i < addresses.length; ++i) {
isHouseguest[addresses[i]] = status;
}
}
function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
buyCooldownEnabled = _status;
cooldownTimerInterval = _interval;
}
// OK, check 3
function swapBack() internal swapping {
uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
uint256 tokensToSell = swapThreshold.div(rate);
uint256 amountToLiquify = tokensToSell.div(totalFee).mul(dynamicLiquidityFee).div(2);
uint256 amountToSwap = tokensToSell.sub(amountToLiquify);
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WBNB;
uint256 balanceBefore = address(this).balance;
router.swapExactTokensForETHSupportingFeeOnTransferTokens(
amountToSwap,
0,
path,
address(this),
block.timestamp
);
uint256 amountBNB = address(this).balance.sub(balanceBefore);
uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));
uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);
uint256 amountBNBDev = amountBNB.mul(devFee).div(totalBNBFee);
try distributor.deposit{value: amountBNBReflection}() {} catch {}
(bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");
(tmpSuccess,) = payable(devFeeReceiver).call{value: amountBNBDev, gas: 30000}("");
// only to supress warning msg
tmpSuccess = false;
if(amountToLiquify > 0){
router.addLiquidityETH{value: amountBNBLiquidity}(
address(this),
amountToLiquify,
0,
0,
autoLiquidityReceiver,
block.timestamp
);
emit AutoLiquify(amountBNBLiquidity, amountToLiquify.div(rate));
}
}
function setIsDividendExempt(address holder, bool exempt) external authorized {
require(holder != address(this) && holder != pair);
isDividendExempt[holder] = exempt;
if(exempt){
distributor.setShare(holder, 0);
}else{
distributor.setShare(holder, balanceOf(holder));
}
}
function setIsFeeExempt(address holder, bool exempt) external authorized {
isFeeExempt[holder] = exempt;
}
function setIsTxLimitExempt(address holder, bool exempt) external authorized {
isTxLimitExempt[holder] = exempt;
}
function setIsTimelockExempt(address holder, bool exempt) external authorized {
isTimelockExempt[holder] = exempt;
}
function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external authorized {
liquidityFee = _liquidityFee;
reflectionFee = _reflectionFee;
marketingFee = _marketingFee;
devFee = _devFee;
totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(_devFee);
feeDenominator = _feeDenominator;
require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
}
function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _devFeeReceiver ) external authorized {
autoLiquidityReceiver = _autoLiquidityReceiver;
marketingFeeReceiver = _marketingFeeReceiver;
devFeeReceiver = _devFeeReceiver;
}
function setSwapBackSettings(bool _enabled, uint256 _percentage_base10000) external authorized {
swapEnabled = _enabled;
swapThreshold = rSupply.div(10000).mul(_percentage_base10000);
}
function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
targetLiquidity = _target;
targetLiquidityDenominator = _denominator;
}
function manualSync() external {
InterfaceLP(pair).sync();
}
function setLP(address _address) external onlyOwner {
pairContract = InterfaceLP(_address);
isFeeExempt[_address];
}
function setMaster(address _master) external onlyOwner {
master = _master;
}
function isNotInSwap() external view returns (bool) {
return !inSwap;
}
function checkSwapThreshold() external view returns (uint256) {
return swapThreshold.div(rate);
}
function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
distributor.setDistributionCriteria(_minPeriod, _minDistribution);
}
function setDistributorSettings(uint256 gas) external authorized {
require(gas < 900000);
distributorGas = gas;
}
function rescueToken(address tokenAddress, uint256 tokens) public onlyOwner returns (bool success) {
return IBEP20(tokenAddress).transfer(msg.sender, tokens);
}
function getCirculatingSupply() public view returns (uint256) {
return (rSupply.sub(_rBalance[DEAD]).sub(_rBalance[ZERO])).div(rate);
}
function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
}
function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
return getLiquidityBacking(accuracy) > target;
}
function checkMaxWalletToken() external view returns (uint256) {
return _maxWalletToken.div(rate);
}
function checkMaxTxAmount() external view returns (uint256) {
return _maxTxAmount.div(rate);
}
function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner() {
_maxWalletToken = rSupply.div(1000).mul(maxWallPercent_base1000);
}
function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner() {
_maxTxAmount = rSupply.div(1000).mul(maxTXPercentage_base1000);
}
/* Airdrop Begins */
function multiTransfer(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {
require(addresses.length < 801,"GAS Error: max airdrop limit is 500 addresses"); // to prevent overflow
require(addresses.length == tokens.length,"Mismatch between Address and token count");
uint256 SCCC = 0;
for(uint i=0; i < addresses.length; i++){
SCCC = SCCC + tokens[i];
}
require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
for(uint i=0; i < addresses.length; i++){
_basicTransfer(from,addresses[i],tokens[i]);
if(!isDividendExempt[addresses[i]]) {
try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {}
}
}
// Dividend tracker
if(!isDividendExempt[from]) {
try distributor.setShare(from, balanceOf(from)) {} catch {}
}
}
function multiTransfer_fixed(address from, address[] calldata addresses, uint256 tokens) external onlyOwner {
require(addresses.length < 2001,"GAS Error: max airdrop limit is 2000 addresses"); // to prevent overflow
uint256 SCCC = tokens * addresses.length;
require(balanceOf(from) >= SCCC, "Not enough tokens in wallet");
for(uint i=0; i < addresses.length; i++){
_basicTransfer(from,addresses[i],tokens);
if(!isDividendExempt[addresses[i]]) {
try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {}
}
}
// Dividend tracker
if(!isDividendExempt[from]) {
try distributor.setShare(from, balanceOf(from)) {} catch {}
}
}
function rebase_updatebalance(address[] calldata addresses) external onlyOwner {
require(addresses.length < 5001,"GAS Error: max address allowed is 5000"); // to prevent out of gas & overflow error
for(uint i=0; i < addresses.length; i++){
if(!isDividendExempt[addresses[i]]) {
try distributor.setShare(addresses[i], balanceOf(addresses[i])) {} catch {}
}
}
}
event AutoLiquify(uint256 amountBNB, uint256 amountTokens);
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"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":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"guest","type":"address"},{"indexed":false,"internalType":"uint256","name":"rentPaid","type":"uint256"}],"name":"CaliforniaCheckin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","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":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","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":"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":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance_sender","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadBlocks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"devFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"distributor","outputs":[{"internalType":"contract DividendDistributor","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"enable_hotel_CaliforniaMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"hotelCaliforniaMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDividendExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isHouseguest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNotInSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":"address","name":"","type":"address"}],"name":"isTimelockExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTxLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_launchblock","type":"uint256"}],"name":"launchStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launchedAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"manage_houseguests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSync","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"master","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxRoomRent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"multiTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"multiTransfer_fixed","outputs":[],"stateMutability":"nonpayable","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":"pairContract","outputs":[{"internalType":"contract InterfaceLP","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"epoch","type":"uint256"},{"internalType":"int256","name":"supplyDelta","type":"int256"}],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rebase_count","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage_base1000","type":"uint256"},{"internalType":"bool","name":"reduce","type":"bool"}],"name":"rebase_percentage","outputs":[{"internalType":"uint256","name":"newSupply","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"rebase_updatebalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"rescueToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_devFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_devFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_master","type":"address"}],"name":"setMaster","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_percentage_base10000","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rent_withoutdecimal","type":"uint256"}],"name":"set_max_roomrent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Multiplier","type":"uint256"}],"name":"set_sell_multiplier","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint256","name":"_deadBlocks","type":"uint256"}],"name":"tradingStatus","outputs":[],"stateMutability":"nonpayable","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"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
60806040526002805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b03199182161782556003805461dead9083161790556004805490911690556001600b556000600c8190556005600d55600e8190556006600f55606460108190556401dcd650006011556012805460ff19908116909155601484815560158490556016839055601a55601b829055601e805460ff60a01b191690556207a1206020556021805461ffff19166105001790556023805490911690557e068db8bac710cb295e9e1b089a027525460aa64c2f837b4a0848237a4b339c6024556025919091556200012b91906200011790678ac7230489e800006000195b0660001903620004ac60201b6200300f1790919060201c565b620004ff60201b620030511790919060201c565b6028556200014c6003620001176064678ac7230489e80000600019620000fe565b6029553480156200015c57600080fd5b50600080546001600160a01b0319908116339081178355825260016020818152604093849020805460ff1916909217909155601c8054909216737a250d5630b4cf539739df2c5dacb4c659f2488d1791829055825163c45a015560e01b815292516001600160a01b03929092169263c45a01559260048083019392829003018186803b158015620001ec57600080fd5b505afa15801562000201573d6000803e3d6000fd5b505050506040513d60208110156200021857600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200027057600080fd5b505af115801562000285573d6000803e3d6000fd5b505050506040513d60208110156200029c57600080fd5b5051601d80546001600160a01b03199081166001600160a01b03938416178255306000908152600660209081526040808320601c54871684529091529020600019908190559154601e805491909416911617909155678ac7230489e8000060278190556200030c918190620000fe565b602655601c546040516001600160a01b03909116906200032c9062000604565b6001600160a01b03909116815260405190819003602001906000f0801580156200035a573d6000803e3d6000fd5b50601f80546001600160a01b039283166001600160a01b031991821617909155336000818152600760209081526040808320805460ff19908116600190811790925560088452828520805482168317905560098452828520805482168317905560038054891686528386208054831684179055308087528487208054841685179055601d548a168752600a86528487208054841685179055865283862080548316841790555490971684528184208054909716179095556017805485168417905560188054851673fd140b1685a6285e4bc15701e7e78e2befece1c5179055601980549094167381909d8964d491e14caf79dca6383d31c5ab8db4179093558181526005835283812067693fcf03e3d7ffff19905560275484519081529351919390927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a362000612565b6000620004f683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200055d60201b60201c565b90505b92915050565b6000826200051057506000620004f9565b828202828482816200051e57fe5b0414620004f65760405162461bcd60e51b81526004018080602001828103825260218152602001806200569b6021913960400191505060405180910390fd5b60008183620005ed5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620005b157818101518382015260200162000597565b50505050905090810190601f168015620005df5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620005fa57fe5b0495945050505050565b610eaa80620047f183390190565b6141cf80620006226000396000f3fe6080604052600436106104c45760003560e01c8063722b62ad11610276578063bfe109281161014f578063f0b37c04116100c1578063fabb0b4f11610085578063fabb0b4f14611314578063fe2840e414611329578063fe9fbb8014611353578063fed0d2a114611386578063ff7da74e1461139b578063ffb54a99146113c7576104cb565b8063f0b37c0414611223578063f2fde38b14611256578063f708a64f14611289578063f84ba65d146112c4578063f887ea40146112ff576104cb565b8063dab84ee711610113578063dab84ee71461114d578063dd62ed3e14611162578063df20fd491461119d578063e96fada2146111cf578063ec72d65f146111e4578063ee97f7f31461120e576104cb565b8063bfe1092814611037578063ca1d908c1461104c578063ca33e64c146110c9578063d51ed1c8146110de578063d7c0103214611108576104cb565b806395d89b41116101e8578063a8aa1b31116101ac578063a8aa1b3114610f62578063a9059cbb14610f77578063b43b783514610fb0578063b6a5d7de14610fc5578063bd9ab53714610ff8578063bf56b37114611022576104cb565b806395d89b4114610ecf57806398118cb414610ee45780639ba1fc4c14610ef95780639d1944f514610f23578063a5a07a9814610f4d576104cb565b806383ad79941161023a57806383ad799414610df857806383b4ac6814610e0d578063893d20e814610e225780638b42507f14610e3757806393028afd14610e6a5780639439f12014610e9c576104cb565b8063722b62ad14610d74578063753d02a114610d8957806378109e5414610d9e5780637a43e23f14610db35780637d1db4a514610de3576104cb565b80632f34d282116103a857806350db71fb1161031a578063658d4b7f116102de578063658d4b7f14610cb25780636827e76414610ced5780636b67c4df14610d025780636d351d1a14610d175780636ddd171314610d2c57806370a0823114610d41576104cb565b806350db71fb14610b9f578063571ac8b014610bda57806360dbacdf14610c0d5780636149a20a14610c88578063617fe0ed14610c9d576104cb565b80633eaaf86b1161036c5780633eaaf86b14610a965780633f4218e014610aab5780634355855a14610ade57806344a33fd214610b115780634d709adf14610b3b57806350af449e14610b6c576104cb565b80632f34d282146109415780632f54bf6e14610974578063313ce567146109a7578063335f6a43146109d257806333f3d62814610a5d576104cb565b80631da1db5e1161044157806326e353b81161040557806326e353b81461084d57806326fae0d31461087f5780632b112e49146108b25780632c4e722e146108c75780632d48e896146108dc5780632d5945671461090c576104cb565b80631da1db5e146107865780631df4ccfc146107b0578063201e7991146107c557806321eb5d46146107f557806323b872dd1461080a576104cb565b80630a92570f116104885780630a92570f1461063c5780631161ae3914610651578063180b0d7e1461068157806318160ddd146106965780631ca0a28d146106ab576104cb565b80630445b667146104d057806304a66b48146104f757806306fdde031461053b57806309302dc6146105c5578063095ea7b3146105ef576104cb565b366104cb57005b600080fd5b3480156104dc57600080fd5b506104e56113dc565b60408051918252519081900360200190f35b34801561050357600080fd5b50610539600480360360a081101561051a57600080fd5b50803590602081013590604081013590606081013590608001356113e2565b005b34801561054757600080fd5b506105506114bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561058a578181015183820152602001610572565b50505050905090810190601f1680156105b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105d157600080fd5b50610539600480360360208110156105e857600080fd5b50356114e2565b3480156105fb57600080fd5b506106286004803603604081101561061257600080fd5b506001600160a01b038135169060200135611550565b604080519115158252519081900360200190f35b34801561064857600080fd5b506104e56115b7565b34801561065d57600080fd5b506106286004803603604081101561067457600080fd5b50803590602001356115bd565b34801561068d57600080fd5b506104e56115d1565b3480156106a257600080fd5b506104e56115d7565b3480156106b757600080fd5b50610539600480360360608110156106ce57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156106f857600080fd5b82018360208201111561070a57600080fd5b803590602001918460208302840111600160201b8311171561072b57600080fd5b919390929091602081019035600160201b81111561074857600080fd5b82018360208201111561075a57600080fd5b803590602001918460208302840111600160201b8311171561077b57600080fd5b5090925090506115dd565b34801561079257600080fd5b50610539600480360360208110156107a957600080fd5b50356118f7565b3480156107bc57600080fd5b506104e5611987565b3480156107d157600080fd5b50610539600480360360408110156107e857600080fd5b508035906020013561198d565b34801561080157600080fd5b506106286119e0565b34801561081657600080fd5b506106286004803603606081101561082d57600080fd5b506001600160a01b038135811691602081013590911690604001356119e9565b34801561085957600080fd5b506105396004803603604081101561087057600080fd5b50803515159060200135611aab565b34801561088b57600080fd5b50610539600480360360208110156108a257600080fd5b50356001600160a01b0316611b2f565b3480156108be57600080fd5b506104e5611b9c565b3480156108d357600080fd5b506104e5611bfa565b3480156108e857600080fd5b50610539600480360360408110156108ff57600080fd5b5080359060200135611c00565b34801561091857600080fd5b506105396004803603604081101561092f57600080fd5b5080351515906020013560ff16611cb0565b34801561094d57600080fd5b506105396004803603602081101561096457600080fd5b50356001600160a01b0316611d19565b34801561098057600080fd5b506106286004803603602081101561099757600080fd5b50356001600160a01b0316611d85565b3480156109b357600080fd5b506109bc611d99565b6040805160ff9092168252519081900360200190f35b3480156109de57600080fd5b50610539600480360360608110156109f557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a1f57600080fd5b820183602082011115610a3157600080fd5b803590602001918460208302840111600160201b83111715610a5257600080fd5b919350915035611d9e565b348015610a6957600080fd5b5061062860048036036040811015610a8057600080fd5b506001600160a01b038135169060200135612026565b348015610aa257600080fd5b506104e56120ed565b348015610ab757600080fd5b5061062860048036036020811015610ace57600080fd5b50356001600160a01b03166120f3565b348015610aea57600080fd5b5061062860048036036020811015610b0157600080fd5b50356001600160a01b0316612108565b348015610b1d57600080fd5b5061053960048036036020811015610b3457600080fd5b503561211d565b348015610b4757600080fd5b50610b50612174565b604080516001600160a01b039092168252519081900360200190f35b348015610b7857600080fd5b5061062860048036036020811015610b8f57600080fd5b50356001600160a01b0316612183565b348015610bab57600080fd5b5061053960048036036040811015610bc257600080fd5b506001600160a01b0381351690602001351515612198565b348015610be657600080fd5b5061062860048036036020811015610bfd57600080fd5b50356001600160a01b031661220b565b348015610c1957600080fd5b5061053960048036036020811015610c3057600080fd5b810190602081018135600160201b811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b803590602001918460208302840111600160201b83111715610c7d57600080fd5b509092509050612219565b348015610c9457600080fd5b506104e561237e565b348015610ca957600080fd5b50610628612397565b348015610cbe57600080fd5b5061053960048036036040811015610cd557600080fd5b506001600160a01b03813516906020013515156123a0565b348015610cf957600080fd5b506104e5612413565b348015610d0e57600080fd5b506104e5612419565b348015610d2357600080fd5b506104e561241f565b348015610d3857600080fd5b50610628612438565b348015610d4d57600080fd5b506104e560048036036020811015610d6457600080fd5b50356001600160a01b0316612441565b348015610d8057600080fd5b506109bc612469565b348015610d9557600080fd5b50610539612477565b348015610daa57600080fd5b506104e56124e1565b348015610dbf57600080fd5b506104e560048036036040811015610dd657600080fd5b50803590602001356124e7565b348015610def57600080fd5b506104e56126c7565b348015610e0457600080fd5b506104e56126cd565b348015610e1957600080fd5b506106286126d3565b348015610e2e57600080fd5b50610b506126e2565b348015610e4357600080fd5b5061062860048036036020811015610e5a57600080fd5b50356001600160a01b03166126f1565b348015610e7657600080fd5b506104e560048036036040811015610e8d57600080fd5b50803590602001351515612706565b348015610ea857600080fd5b5061062860048036036020811015610ebf57600080fd5b50356001600160a01b03166127a9565b348015610edb57600080fd5b506105506127be565b348015610ef057600080fd5b506104e56127dc565b348015610f0557600080fd5b5061053960048036036020811015610f1c57600080fd5b50356127e2565b348015610f2f57600080fd5b5061053960048036036020811015610f4657600080fd5b503561282a565b348015610f5957600080fd5b506104e5612886565b348015610f6e57600080fd5b50610b5061288c565b348015610f8357600080fd5b5061062860048036036040811015610f9a57600080fd5b506001600160a01b03813516906020013561289b565b348015610fbc57600080fd5b506104e56128a8565b348015610fd157600080fd5b5061053960048036036020811015610fe857600080fd5b50356001600160a01b03166128c1565b34801561100457600080fd5b506105396004803603602081101561101b57600080fd5b503561292b565b34801561102e57600080fd5b506104e561298f565b34801561104357600080fd5b50610b50612995565b34801561105857600080fd5b506105396004803603604081101561106f57600080fd5b810190602081018135600160201b81111561108957600080fd5b82018360208201111561109b57600080fd5b803590602001918460208302840111600160201b831117156110bc57600080fd5b91935091503515156129a4565b3480156110d557600080fd5b50610b50612a3c565b3480156110ea57600080fd5b506104e56004803603602081101561110157600080fd5b5035612a4b565b34801561111457600080fd5b506105396004803603606081101561112b57600080fd5b506001600160a01b038135811691602081013582169160409091013516612a7f565b34801561115957600080fd5b50610b50612b06565b34801561116e57600080fd5b506104e56004803603604081101561118557600080fd5b506001600160a01b0381358116916020013516612b15565b3480156111a957600080fd5b50610539600480360360408110156111c057600080fd5b50803515159060200135612b40565b3480156111db57600080fd5b50610b50612bb8565b3480156111f057600080fd5b506105396004803603602081101561120757600080fd5b5035612bc7565b34801561121a57600080fd5b50610b50612c0f565b34801561122f57600080fd5b506105396004803603602081101561124657600080fd5b50356001600160a01b0316612c24565b34801561126257600080fd5b506105396004803603602081101561127957600080fd5b50356001600160a01b0316612c88565b34801561129557600080fd5b50610539600480360360408110156112ac57600080fd5b506001600160a01b0381351690602001351515612d39565b3480156112d057600080fd5b50610539600480360360408110156112e757600080fd5b506001600160a01b0381351690602001351515612eaf565b34801561130b57600080fd5b50610b50612f22565b34801561132057600080fd5b506104e5612f31565b34801561133557600080fd5b506105396004803603602081101561134c57600080fd5b5035612f37565b34801561135f57600080fd5b506106286004803603602081101561137657600080fd5b50356001600160a01b0316612f85565b34801561139257600080fd5b506104e5612fa3565b3480156113a757600080fd5b50610539600480360360208110156113be57600080fd5b50351515612fa9565b3480156113d357600080fd5b50610628612fff565b60245481565b6113eb33612f85565b61142a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600b859055600c849055600d839055600e8290556114548261144e858189896130aa565b906130aa565b600f55601081905560038104600f54106114b5576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000604482015290519081900360640190fd5b5050505050565b60408051808201909152600c81526b477265656e2043616e646c6560a01b602082015290565b6114eb33611d85565b611525576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61154a816115446103e8678ac7230489e800006000195b06199061300f565b90613051565b60295550565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60255481565b6000826115c983612a4b565b119392505050565b60105481565b60275490565b6115e633611d85565b611620576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61032183106116605760405162461bcd60e51b815260040180806020018281038252602d815260200180614147602d913960400191505060405180910390fd5b82811461169e5760405162461bcd60e51b81526004018080602001828103825260288152602001806140926028913960400191505060405180910390fd5b6000805b848110156116cc578383828181106116b657fe5b60200291909101359290920191506001016116a2565b50806116d787612441565b101561172a576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8481101561185a5761176d8787878481811061174557fe5b905060200201356001600160a01b031686868581811061176157fe5b90506020020135613104565b50600a600087878481811061177e57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661185257601f546001600160a01b03166314b6ca968787848181106117c557fe5b905060200201356001600160a01b03166117f98989868181106117e457fe5b905060200201356001600160a01b0316612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561183f57600080fd5b505af1925050508015611850575060015b505b60010161172d565b506001600160a01b0386166000908152600a602052604090205460ff166118ef57601f546001600160a01b03166314b6ca968761189681612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156118dc57600080fd5b505af19250505080156118ed575060015b505b505050505050565b61190033612f85565b61193f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60185447906001600160a01b03166108fc60648484025b049081150290604051600060405180830381858888f19350505050158015611982573d6000803e3d6000fd5b505050565b600f5481565b61199633612f85565b6119d5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601a91909155601b55565b60125460ff1681565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611a96576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054611a71918490613220565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b611aa18484846132b7565b90505b9392505050565b611ab433611d85565b611aee576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e805460ff60a01b1916600160a01b8415158102919091179182905560ff9104168015611b1c5750601554155b15611b2b574360155560148190555b5050565b611b3833611d85565b611b72576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6026546004546001600160a01b039081166000908152600560205260408082205460035490931682528120549092611bf5929091611bef9190611be99067693fcf03e3d7ffff199061395a565b9061395a565b9061300f565b905090565b60265481565b611c0933612f85565b611c48576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f54604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015611c9c57600080fd5b505af11580156118ef573d6000803e3d6000fd5b611cb933611d85565b611cf3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6021805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b611d2233611d85565b611d5c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e80546001600160a01b039092166001600160a01b0319909216821790556000526007602052565b6000546001600160a01b0390811691161490565b600490565b611da733611d85565b611de1576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6107d18210611e215760405162461bcd60e51b815260040180806020018281038252602e8152602001806140ba602e913960400191505060405180910390fd5b80820280611e2e86612441565b1015611e81576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b83811015611f8a57611eb286868684818110611e9c57fe5b905060200201356001600160a01b031685613104565b50600a6000868684818110611ec357fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611f8257601f546001600160a01b03166314b6ca96868684818110611f0a57fe5b905060200201356001600160a01b0316611f298888868181106117e457fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611f6f57600080fd5b505af1925050508015611f80575060015b505b600101611e84565b506001600160a01b0385166000908152600a602052604090205460ff166114b557601f546001600160a01b03166314b6ca9686611fc681612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561200c57600080fd5b505af192505050801561201d575060015b6114b5576114b5565b600061203133611d85565b61206b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b1580156120ba57600080fd5b505af11580156120ce573d6000803e3d6000fd5b505050506040513d60208110156120e457600080fd5b50519392505050565b60275481565b60076020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b61212633612f85565b612165576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b47336108fc6064848402611956565b601e546001600160a01b031681565b60096020526000908152604090205460ff1681565b6121a133612f85565b6121e0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60006115b182600019611550565b61222233611d85565b61225c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611389811061229c5760405162461bcd60e51b81526004018080602001828103825260268152602001806141746026913960400191505060405180910390fd5b60005b8181101561198257600a60008484848181106122b757fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661237657601f546001600160a01b03166314b6ca968484848181106122fe57fe5b905060200201356001600160a01b031661231d8686868181106117e457fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561236357600080fd5b505af1925050508015612374575060015b505b60010161229f565b6000611bf560265460285461300f90919063ffffffff16565b60215460ff1681565b6123a933612f85565b6123e8576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600e5481565b600d5481565b6000611bf560265460245461300f90919063ffffffff16565b60235460ff1681565b6026546001600160a01b03821660009081526005602052604081205490916115b1919061300f565b602154610100900460ff1681565b601d60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156124c757600080fd5b505af11580156124db573d6000803e3d6000fd5b50505050565b60295481565b6023546000906201000090046001600160a01b031633148061250d575061250d33611d85565b61251657600080fd5b6025805460010190558261252a5760255492505b602354610100900460ff1615612573576040805162461bcd60e51b81526020600482015260096024820152682a393c9030b3b0b4b760b91b604482015290519081900360640190fd5b816125b957602754604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a2506027546115b1565b60008212156125db576027546125d390600084900361395a565b6027556125ec565b6027546125e890836130aa565b6027555b6027546001600160801b031015612609576001600160801b036027555b60275461262190678ac7230489e8000060001961153c565b602655601e546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561266d57600080fd5b505af1158015612681573d6000803e3d6000fd5b505060275460408051918252518693507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a25060275492915050565b60285481565b600c5481565b602354610100900460ff161590565b6000546001600160a01b031690565b60086020526000908152604090205460ff1681565b600061271133611d85565b61274b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b811561278957612782600061277d600019612777876115446103e860275461300f90919063ffffffff16565b9061399c565b6124e7565b90506115b1565b611aa4600061277d856115446103e860275461300f90919063ffffffff16565b60136020526000908152604090205460ff1681565b604080518082019091526004815263050554d560e41b602082015290565b600b5481565b6127eb33611d85565b612825576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601555565b61283333612f85565b612872576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620dbba0811061288157600080fd5b602055565b60115481565b601d546001600160a01b031681565b6000611aa43384846132b7565b6000611bf560265460295461300f90919063ffffffff16565b6128ca33611d85565b612904576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61293433611d85565b61296e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b612989816115446103e8678ac7230489e8000060001961153c565b60285550565b60155481565b601f546001600160a01b031681565b6129ad33611d85565b6129e7576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156124db578160136000868685818110612a0357fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016129ea565b6017546001600160a01b031681565b60006115b1612a58611b9c565b601d54611bef90612a7890600290611544906001600160a01b0316612441565b8590613051565b612a8833612f85565b612ac7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601780546001600160a01b039485166001600160a01b031991821617909155601880549385169382169390931790925560198054919093169116179055565b6019546001600160a01b031681565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b612b4933612f85565b612b88576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6023805460ff1916831515179055612bb181611544612710678ac7230489e8000060001961153c565b6024555050565b6018546001600160a01b031681565b612bd033611d85565b612c0a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601655565b6023546201000090046001600160a01b031681565b612c2d33611d85565b612c67576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b612c9133611d85565b612ccb576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b612d4233612f85565b612d81576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590612da85750601d546001600160a01b03838116911614155b612db157600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155612e4e57601f5460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015612e3157600080fd5b505af1158015612e45573d6000803e3d6000fd5b50505050611b2b565b601f546001600160a01b03166314b6ca9683612e6981612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611c9c57600080fd5b612eb833612f85565b612ef7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601c546001600160a01b031681565b60145481565b612f4033611d85565b612f7a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b633b9aca0002601155565b6001600160a01b031660009081526001602052604090205460ff1690565b60165481565b612fb233611d85565b612fec576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6012805460ff1916911515919091179055565b601e54600160a01b900460ff1681565b6000611aa483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139e4565b600082613060575060006115b1565b8282028284828161306d57fe5b0414611aa45760405162461bcd60e51b81526004018080602001828103825260218152602001806140e86021913960400191505060405180910390fd5b600082820183811015611aa4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008061311c6026548461305190919063ffffffff16565b90506131848160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b03168152602001908152602001600020546132209092919063ffffffff16565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546131b390826130aa565b6001600160a01b03808616600081815260056020526040902092909255602654908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061320490859061300f565b60408051918252519081900360200190a3506001949350505050565b600081848411156132af5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561327457818101518382015260200161325c565b50505050905090810190601f1680156132a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602354600090610100900460ff16156132dc576132d5848484613104565b9050611aa4565b6001600160a01b03841660009081526001602052604090205460ff1615801561331e57506001600160a01b03831660009081526001602052604090205460ff16155b1561337857601e54600160a01b900460ff16613378576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600061338f6026548461305190919063ffffffff16565b6001600160a01b03861660009081526001602052604090205490915060ff161580156133c457506001600160a01b0384163014155b80156133de57506003546001600160a01b03858116911614155b80156133f85750601d546001600160a01b03858116911614155b801561341257506018546001600160a01b03858116911614155b801561342c57506019546001600160a01b03858116911614155b801561344657506017546001600160a01b03858116911614155b1561349d57600061345685612441565b9050602954828201111561349b5760405162461bcd60e51b815260040180806020018281038252603e815260200180614109603e913960400191505060405180910390fd5b505b601d546001600160a01b0386811691161480156134bc575060215460ff165b80156134e157506001600160a01b03841660009081526009602052604090205460ff16155b15613571576001600160a01b0384166000908152602260205260409020544211613548576040805162461bcd60e51b815260206004820152601360248201527262757920436f6f6c646f776e2065786973747360681b604482015290519081900360640190fd5b6021546001600160a01b038516600090815260226020526040902061010090910460ff16420190555b60125460ff161561365c576001600160a01b03851660009081526013602052604090205460ff16156135db576040805162461bcd60e51b815260206004820152600e60248201526d109bdd1cc818d85b9d081cd95b1b60921b604482015290519081900360640190fd5b6011543a1180156135f95750601d546001600160a01b038681169116145b1561365c576001600160a01b038416600081815260136020908152604091829020805460ff1916600117905581519283523a9083015280517fc05fe82fadc2c648ffcab1a84911ab5cd07e695a06d36020d37eb94c898eb2859281900390910190a15b6136668582613a49565b61366e613ab7565b1561367b5761367b613b0b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600590915291909120546136cd918390613220565b6001600160a01b0386166000908152600560205260408120919091556136f286613f85565b1580613704575061370285613f85565b155b61372b57601d5461372690879084906001600160a01b03898116911614613fa4565b61372d565b815b6001600160a01b03861660009081526005602052604090205490915061375390826130aa565b6001600160a01b038087166000908152600560209081526040808320949094559189168152600a909152205460ff166137fa57601f546001600160a01b03166314b6ca96876137a181612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156137e757600080fd5b505af19250505080156137f8575060015b505b6001600160a01b0385166000908152600a602052604090205460ff1661388e57601f546001600160a01b03166314b6ca968661383581612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561387b57600080fd5b505af192505050801561388c575060015b505b601f54602054604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b1580156138e157600080fd5b505af19250505080156138f2575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61393d6026548561300f90919063ffffffff16565b60408051918252519081900360200190a350600195945050505050565b6000611aa483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613220565b6000828202600160ff1b811415806139bd5750600160ff1b84811690841614155b6139c657600080fd5b8215806139db5750838382816139d857fe5b05145b611aa457600080fd5b60008183613a335760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561327457818101518382015260200161325c565b506000838581613a3f57fe5b0495945050505050565b60285481111580613a7257506001600160a01b03821660009081526008602052604090205460ff165b611b2b576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601d546000906001600160a01b03163314801590613add5750602354610100900460ff16155b8015613aeb575060235460ff165b8015611bf557505060245430600090815260056020526040902054101590565b6023805461ff001916610100179055601a54601b54600091613b2c916115bd565b613b3857600b54613b3b565b60005b90506000613b5660265460245461300f90919063ffffffff16565b90506000613b786002611bef85611544600f548761300f90919063ffffffff16565b90506000613b86838361395a565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110613bb857fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110613be357fe5b6001600160a01b03928316602091820292909201810191909152601c5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015613c7d578181015183820152602001613c65565b505050509050019650505050505050600060405180830381600087803b158015613ca657600080fd5b505af1158015613cba573d6000803e3d6000fd5b505050506000613cd3824761395a90919063ffffffff16565b90506000613cee613ce589600261300f565b600f549061395a565b90506000613d036002611bef8481878e613051565b90506000613d2083611bef600c548761305190919063ffffffff16565b90506000613d3d84611bef600d548861305190919063ffffffff16565b90506000613d5a85611bef600e548961305190919063ffffffff16565b9050601f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613dac57600080fd5b505af193505050508015613dbe575060015b506018546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114613e11576040519150601f19603f3d011682016040523d82523d6000602084013e613e16565b606091505b50506019546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613e6b576040519150601f19603f3d011682016040523d82523d6000602084013e613e70565b606091505b5060009250508b159050613f6b57601c546017546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b158015613ef357600080fd5b505af1158015613f07573d6000803e3d6000fd5b50505050506040513d6060811015613f1e57600080fd5b50506026547f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506908690613f52908e9061300f565b6040805192835260208301919091528051918290030190a15b50506023805461ff00191690555050505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b600060648215613fb357506016545b6000613fd782611544600f546115446010546064028a61300f90919063ffffffff16565b905083158015613fec57504360145460155401115b1561400457614001606361154487606461300f565b90505b3060009081526005602052604090205461401e90826130aa565b306000818152600560205260409020919091556026546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061406c90859061300f565b60408051918252519081900360200190a3614087858261395a565b969550505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74474153204572726f723a206d61782061697264726f70206c696d6974206973203230303020616464726573736573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d6178206164647265737320616c6c6f7765642069732035303030a26469706673582212203de004c53ec6f84b78636092a509fd4c6f0e591ecca12ff95f17321f73cdce9364736f6c6343000704003360806040526001805473c02aaa39b223fe8d0a0e5c4f27ead9083c756cc26001600160a01b031991821681179092556002805490911690911790556ec097ce7bc90715b34b9f1000000000600c55610a8c600d556305f5e100600e5534801561006757600080fd5b50604051610eaa380380610eaa8339818101604052602081101561008a57600080fd5b50516001600160a01b0381166100b457737a250d5630b4cf539739df2c5dacb4c659f2488d6100b6565b805b600380546001600160a01b03929092166001600160a01b0319928316179055600080549091163317905550610dba806100f06000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed14610254578063f0fc6bca14610269578063ffb2c4791461027e578063ffd49c84146102a8576100dd565b8063ce7c2ac2146101e6578063d0e30db014610237578063e2d2e2191461023f576100dd565b80632d48e896116100bb5780632d48e896146101775780633a98ef39146101a75780634fab0ae8146101bc578063997664d7146101d1576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610144575b600080fd5b3480156100ee57600080fd5b506100f76102bd565b60408051918252519081900360200190f35b34801561011557600080fd5b506101426004803603604081101561012c57600080fd5b506001600160a01b0381351690602001356102c3565b005b34801561015057600080fd5b506100f76004803603602081101561016757600080fd5b50356001600160a01b03166103e8565b34801561018357600080fd5b506101426004803603604081101561019a57600080fd5b5080359060200135610474565b3480156101b357600080fd5b506100f7610496565b3480156101c857600080fd5b506100f761049c565b3480156101dd57600080fd5b506100f76104a2565b3480156101f257600080fd5b506102196004803603602081101561020957600080fd5b50356001600160a01b03166104a8565b60408051938452602084019290925282820152519081900360600190f35b6101426104c9565b34801561024b57600080fd5b506100f7610759565b34801561026057600080fd5b506100f761075f565b34801561027557600080fd5b50610142610765565b34801561028a57600080fd5b50610142600480360360208110156102a157600080fd5b5035610770565b3480156102b457600080fd5b506100f7610852565b600c5481565b6000546001600160a01b031633146102da57600080fd5b6001600160a01b038216600090815260076020526040902054156103015761030182610858565b60008111801561032757506001600160a01b038216600090815260076020526040902054155b1561033a5761033582610980565b61036d565b8015801561035f57506001600160a01b03821660009081526007602052604090205415155b1561036d5761036d826109e1565b6001600160a01b03821660009081526007602052604090205460085461039e91839161039891610ace565b90610b19565b6008556001600160a01b03821660009081526007602052604090208190556103c581610b73565b6001600160a01b0390921660009081526007602052604090206001019190915550565b6001600160a01b03811660009081526007602052604081205461040d5750600061046f565b6001600160a01b03821660009081526007602052604081205461042f90610b73565b6001600160a01b0384166000908152600760205260409020600101549091508082116104605760009250505061046f565b61046a8282610ace565b925050505b919050565b6000546001600160a01b0316331461048b57600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b6000546001600160a01b031633146104e057600080fd5b600154604080516370a0823160e01b815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561052b57600080fd5b505afa15801561053f573d6000803e3d6000fd5b505050506040513d602081101561055557600080fd5b5051604080516002808252606080830184529394509091602083019080368337505060025482519293506001600160a01b03169183915060009061059557fe5b6001600160a01b03928316602091820292909201015260018054835192169183919081106105bf57fe5b6001600160a01b0392831660209182029290920181019190915260035460405163b6f9de9560e01b815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b83811015610651578181015183820152602001610639565b50505050905001955050505050506000604051808303818588803b15801561067857600080fd5b505af115801561068c573d6000803e3d6000fd5b5050600154604080516370a0823160e01b815230600482015290516000955061071794508793506001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156106e557600080fd5b505afa1580156106f9573d6000803e3d6000fd5b505050506040513d602081101561070f57600080fd5b505190610ace565b6009549091506107279082610b19565b600955600854600c5461075191610748916107429085610b90565b90610be9565b600b5490610b19565b600b55505050565b600b5481565b600a5481565b61076e33610858565b565b6000546001600160a01b0316331461078757600080fd5b60045480610795575061084f565b6000805a905060005b84831080156107ac57508381105b1561084a5783600f54106107c0576000600f555b6107ec6004600f54815481106107d257fe5b6000918252602090912001546001600160a01b0316610c2b565b1561081d5761081d6004600f548154811061080357fe5b6000918252602090912001546001600160a01b0316610858565b61083261082b5a8490610ace565b8490610b19565b92505a600f805460019081019091559092500161079e565b505050505b50565b600d5481565b6001600160a01b03811660009081526007602052604090205461087a5761084f565b6000610885826103e8565b9050801561097c57600a5461089a9082610b19565b600a556001546040805163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b1580156108f357600080fd5b505af1158015610907573d6000803e3d6000fd5b505050506040513d602081101561091d57600080fd5b50506001600160a01b038216600090815260066020908152604080832042905560079091529020600201546109529082610b19565b6001600160a01b03831660009081526007602052604090206002810191909155546103c590610b73565b5050565b600480546001600160a01b039092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180546001600160a01b0319169091179055565b6004805460001981019081106109f357fe5b60009182526020808320909101546001600160a01b0384811684526005909252604090922054600480549290931692918110610a2b57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559183168152600591829052604081205460048054919392916000198101908110610a7957fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020556004805480610aa957fe5b600082815260209020810160001990810180546001600160a01b031916905501905550565b6000610b1083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610c67565b90505b92915050565b600082820183811015610b10576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610b13600c54610742600b5485610b9090919063ffffffff16565b600082610b9f57506000610b13565b82820282848281610bac57fe5b0414610b105760405162461bcd60e51b8152600401808060200182810382526021815260200180610d646021913960400191505060405180910390fd5b6000610b1083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610cfe565b600d546001600160a01b0382166000908152600660205260408120549091429101108015610b135750600e54610c60836103e8565b1192915050565b60008184841115610cf65760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610cbb578181015183820152602001610ca3565b50505050905090810190601f168015610ce85780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008183610d4d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315610cbb578181015183820152602001610ca3565b506000838581610d5957fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212208331beb9c49311f1e825d8f65475b5b58574d21d81216471e70725a0d7f1137664736f6c63430007040033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77
Deployed Bytecode
0x6080604052600436106104c45760003560e01c8063722b62ad11610276578063bfe109281161014f578063f0b37c04116100c1578063fabb0b4f11610085578063fabb0b4f14611314578063fe2840e414611329578063fe9fbb8014611353578063fed0d2a114611386578063ff7da74e1461139b578063ffb54a99146113c7576104cb565b8063f0b37c0414611223578063f2fde38b14611256578063f708a64f14611289578063f84ba65d146112c4578063f887ea40146112ff576104cb565b8063dab84ee711610113578063dab84ee71461114d578063dd62ed3e14611162578063df20fd491461119d578063e96fada2146111cf578063ec72d65f146111e4578063ee97f7f31461120e576104cb565b8063bfe1092814611037578063ca1d908c1461104c578063ca33e64c146110c9578063d51ed1c8146110de578063d7c0103214611108576104cb565b806395d89b41116101e8578063a8aa1b31116101ac578063a8aa1b3114610f62578063a9059cbb14610f77578063b43b783514610fb0578063b6a5d7de14610fc5578063bd9ab53714610ff8578063bf56b37114611022576104cb565b806395d89b4114610ecf57806398118cb414610ee45780639ba1fc4c14610ef95780639d1944f514610f23578063a5a07a9814610f4d576104cb565b806383ad79941161023a57806383ad799414610df857806383b4ac6814610e0d578063893d20e814610e225780638b42507f14610e3757806393028afd14610e6a5780639439f12014610e9c576104cb565b8063722b62ad14610d74578063753d02a114610d8957806378109e5414610d9e5780637a43e23f14610db35780637d1db4a514610de3576104cb565b80632f34d282116103a857806350db71fb1161031a578063658d4b7f116102de578063658d4b7f14610cb25780636827e76414610ced5780636b67c4df14610d025780636d351d1a14610d175780636ddd171314610d2c57806370a0823114610d41576104cb565b806350db71fb14610b9f578063571ac8b014610bda57806360dbacdf14610c0d5780636149a20a14610c88578063617fe0ed14610c9d576104cb565b80633eaaf86b1161036c5780633eaaf86b14610a965780633f4218e014610aab5780634355855a14610ade57806344a33fd214610b115780634d709adf14610b3b57806350af449e14610b6c576104cb565b80632f34d282146109415780632f54bf6e14610974578063313ce567146109a7578063335f6a43146109d257806333f3d62814610a5d576104cb565b80631da1db5e1161044157806326e353b81161040557806326e353b81461084d57806326fae0d31461087f5780632b112e49146108b25780632c4e722e146108c75780632d48e896146108dc5780632d5945671461090c576104cb565b80631da1db5e146107865780631df4ccfc146107b0578063201e7991146107c557806321eb5d46146107f557806323b872dd1461080a576104cb565b80630a92570f116104885780630a92570f1461063c5780631161ae3914610651578063180b0d7e1461068157806318160ddd146106965780631ca0a28d146106ab576104cb565b80630445b667146104d057806304a66b48146104f757806306fdde031461053b57806309302dc6146105c5578063095ea7b3146105ef576104cb565b366104cb57005b600080fd5b3480156104dc57600080fd5b506104e56113dc565b60408051918252519081900360200190f35b34801561050357600080fd5b50610539600480360360a081101561051a57600080fd5b50803590602081013590604081013590606081013590608001356113e2565b005b34801561054757600080fd5b506105506114bc565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561058a578181015183820152602001610572565b50505050905090810190601f1680156105b75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156105d157600080fd5b50610539600480360360208110156105e857600080fd5b50356114e2565b3480156105fb57600080fd5b506106286004803603604081101561061257600080fd5b506001600160a01b038135169060200135611550565b604080519115158252519081900360200190f35b34801561064857600080fd5b506104e56115b7565b34801561065d57600080fd5b506106286004803603604081101561067457600080fd5b50803590602001356115bd565b34801561068d57600080fd5b506104e56115d1565b3480156106a257600080fd5b506104e56115d7565b3480156106b757600080fd5b50610539600480360360608110156106ce57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156106f857600080fd5b82018360208201111561070a57600080fd5b803590602001918460208302840111600160201b8311171561072b57600080fd5b919390929091602081019035600160201b81111561074857600080fd5b82018360208201111561075a57600080fd5b803590602001918460208302840111600160201b8311171561077b57600080fd5b5090925090506115dd565b34801561079257600080fd5b50610539600480360360208110156107a957600080fd5b50356118f7565b3480156107bc57600080fd5b506104e5611987565b3480156107d157600080fd5b50610539600480360360408110156107e857600080fd5b508035906020013561198d565b34801561080157600080fd5b506106286119e0565b34801561081657600080fd5b506106286004803603606081101561082d57600080fd5b506001600160a01b038135811691602081013590911690604001356119e9565b34801561085957600080fd5b506105396004803603604081101561087057600080fd5b50803515159060200135611aab565b34801561088b57600080fd5b50610539600480360360208110156108a257600080fd5b50356001600160a01b0316611b2f565b3480156108be57600080fd5b506104e5611b9c565b3480156108d357600080fd5b506104e5611bfa565b3480156108e857600080fd5b50610539600480360360408110156108ff57600080fd5b5080359060200135611c00565b34801561091857600080fd5b506105396004803603604081101561092f57600080fd5b5080351515906020013560ff16611cb0565b34801561094d57600080fd5b506105396004803603602081101561096457600080fd5b50356001600160a01b0316611d19565b34801561098057600080fd5b506106286004803603602081101561099757600080fd5b50356001600160a01b0316611d85565b3480156109b357600080fd5b506109bc611d99565b6040805160ff9092168252519081900360200190f35b3480156109de57600080fd5b50610539600480360360608110156109f557600080fd5b6001600160a01b038235169190810190604081016020820135600160201b811115610a1f57600080fd5b820183602082011115610a3157600080fd5b803590602001918460208302840111600160201b83111715610a5257600080fd5b919350915035611d9e565b348015610a6957600080fd5b5061062860048036036040811015610a8057600080fd5b506001600160a01b038135169060200135612026565b348015610aa257600080fd5b506104e56120ed565b348015610ab757600080fd5b5061062860048036036020811015610ace57600080fd5b50356001600160a01b03166120f3565b348015610aea57600080fd5b5061062860048036036020811015610b0157600080fd5b50356001600160a01b0316612108565b348015610b1d57600080fd5b5061053960048036036020811015610b3457600080fd5b503561211d565b348015610b4757600080fd5b50610b50612174565b604080516001600160a01b039092168252519081900360200190f35b348015610b7857600080fd5b5061062860048036036020811015610b8f57600080fd5b50356001600160a01b0316612183565b348015610bab57600080fd5b5061053960048036036040811015610bc257600080fd5b506001600160a01b0381351690602001351515612198565b348015610be657600080fd5b5061062860048036036020811015610bfd57600080fd5b50356001600160a01b031661220b565b348015610c1957600080fd5b5061053960048036036020811015610c3057600080fd5b810190602081018135600160201b811115610c4a57600080fd5b820183602082011115610c5c57600080fd5b803590602001918460208302840111600160201b83111715610c7d57600080fd5b509092509050612219565b348015610c9457600080fd5b506104e561237e565b348015610ca957600080fd5b50610628612397565b348015610cbe57600080fd5b5061053960048036036040811015610cd557600080fd5b506001600160a01b03813516906020013515156123a0565b348015610cf957600080fd5b506104e5612413565b348015610d0e57600080fd5b506104e5612419565b348015610d2357600080fd5b506104e561241f565b348015610d3857600080fd5b50610628612438565b348015610d4d57600080fd5b506104e560048036036020811015610d6457600080fd5b50356001600160a01b0316612441565b348015610d8057600080fd5b506109bc612469565b348015610d9557600080fd5b50610539612477565b348015610daa57600080fd5b506104e56124e1565b348015610dbf57600080fd5b506104e560048036036040811015610dd657600080fd5b50803590602001356124e7565b348015610def57600080fd5b506104e56126c7565b348015610e0457600080fd5b506104e56126cd565b348015610e1957600080fd5b506106286126d3565b348015610e2e57600080fd5b50610b506126e2565b348015610e4357600080fd5b5061062860048036036020811015610e5a57600080fd5b50356001600160a01b03166126f1565b348015610e7657600080fd5b506104e560048036036040811015610e8d57600080fd5b50803590602001351515612706565b348015610ea857600080fd5b5061062860048036036020811015610ebf57600080fd5b50356001600160a01b03166127a9565b348015610edb57600080fd5b506105506127be565b348015610ef057600080fd5b506104e56127dc565b348015610f0557600080fd5b5061053960048036036020811015610f1c57600080fd5b50356127e2565b348015610f2f57600080fd5b5061053960048036036020811015610f4657600080fd5b503561282a565b348015610f5957600080fd5b506104e5612886565b348015610f6e57600080fd5b50610b5061288c565b348015610f8357600080fd5b5061062860048036036040811015610f9a57600080fd5b506001600160a01b03813516906020013561289b565b348015610fbc57600080fd5b506104e56128a8565b348015610fd157600080fd5b5061053960048036036020811015610fe857600080fd5b50356001600160a01b03166128c1565b34801561100457600080fd5b506105396004803603602081101561101b57600080fd5b503561292b565b34801561102e57600080fd5b506104e561298f565b34801561104357600080fd5b50610b50612995565b34801561105857600080fd5b506105396004803603604081101561106f57600080fd5b810190602081018135600160201b81111561108957600080fd5b82018360208201111561109b57600080fd5b803590602001918460208302840111600160201b831117156110bc57600080fd5b91935091503515156129a4565b3480156110d557600080fd5b50610b50612a3c565b3480156110ea57600080fd5b506104e56004803603602081101561110157600080fd5b5035612a4b565b34801561111457600080fd5b506105396004803603606081101561112b57600080fd5b506001600160a01b038135811691602081013582169160409091013516612a7f565b34801561115957600080fd5b50610b50612b06565b34801561116e57600080fd5b506104e56004803603604081101561118557600080fd5b506001600160a01b0381358116916020013516612b15565b3480156111a957600080fd5b50610539600480360360408110156111c057600080fd5b50803515159060200135612b40565b3480156111db57600080fd5b50610b50612bb8565b3480156111f057600080fd5b506105396004803603602081101561120757600080fd5b5035612bc7565b34801561121a57600080fd5b50610b50612c0f565b34801561122f57600080fd5b506105396004803603602081101561124657600080fd5b50356001600160a01b0316612c24565b34801561126257600080fd5b506105396004803603602081101561127957600080fd5b50356001600160a01b0316612c88565b34801561129557600080fd5b50610539600480360360408110156112ac57600080fd5b506001600160a01b0381351690602001351515612d39565b3480156112d057600080fd5b50610539600480360360408110156112e757600080fd5b506001600160a01b0381351690602001351515612eaf565b34801561130b57600080fd5b50610b50612f22565b34801561132057600080fd5b506104e5612f31565b34801561133557600080fd5b506105396004803603602081101561134c57600080fd5b5035612f37565b34801561135f57600080fd5b506106286004803603602081101561137657600080fd5b50356001600160a01b0316612f85565b34801561139257600080fd5b506104e5612fa3565b3480156113a757600080fd5b50610539600480360360208110156113be57600080fd5b50351515612fa9565b3480156113d357600080fd5b50610628612fff565b60245481565b6113eb33612f85565b61142a576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b600b859055600c849055600d839055600e8290556114548261144e858189896130aa565b906130aa565b600f55601081905560038104600f54106114b5576040805162461bcd60e51b815260206004820152601c60248201527f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000604482015290519081900360640190fd5b5050505050565b60408051808201909152600c81526b477265656e2043616e646c6560a01b602082015290565b6114eb33611d85565b611525576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61154a816115446103e8678ac7230489e800006000195b06199061300f565b90613051565b60295550565b3360008181526006602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b60255481565b6000826115c983612a4b565b119392505050565b60105481565b60275490565b6115e633611d85565b611620576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b61032183106116605760405162461bcd60e51b815260040180806020018281038252602d815260200180614147602d913960400191505060405180910390fd5b82811461169e5760405162461bcd60e51b81526004018080602001828103825260288152602001806140926028913960400191505060405180910390fd5b6000805b848110156116cc578383828181106116b657fe5b60200291909101359290920191506001016116a2565b50806116d787612441565b101561172a576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b8481101561185a5761176d8787878481811061174557fe5b905060200201356001600160a01b031686868581811061176157fe5b90506020020135613104565b50600a600087878481811061177e57fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661185257601f546001600160a01b03166314b6ca968787848181106117c557fe5b905060200201356001600160a01b03166117f98989868181106117e457fe5b905060200201356001600160a01b0316612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561183f57600080fd5b505af1925050508015611850575060015b505b60010161172d565b506001600160a01b0386166000908152600a602052604090205460ff166118ef57601f546001600160a01b03166314b6ca968761189681612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156118dc57600080fd5b505af19250505080156118ed575060015b505b505050505050565b61190033612f85565b61193f576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b60185447906001600160a01b03166108fc60648484025b049081150290604051600060405180830381858888f19350505050158015611982573d6000803e3d6000fd5b505050565b600f5481565b61199633612f85565b6119d5576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601a91909155601b55565b60125460ff1681565b6001600160a01b038316600090815260066020908152604080832033845290915281205460001914611a96576040805180820182526016815275496e73756666696369656e7420416c6c6f77616e636560501b6020808301919091526001600160a01b0387166000908152600682528381203382529091529190912054611a71918490613220565b6001600160a01b03851660009081526006602090815260408083203384529091529020555b611aa18484846132b7565b90505b9392505050565b611ab433611d85565b611aee576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e805460ff60a01b1916600160a01b8415158102919091179182905560ff9104168015611b1c5750601554155b15611b2b574360155560148190555b5050565b611b3833611d85565b611b72576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b602380546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6026546004546001600160a01b039081166000908152600560205260408082205460035490931682528120549092611bf5929091611bef9190611be99067693fcf03e3d7ffff199061395a565b9061395a565b9061300f565b905090565b60265481565b611c0933612f85565b611c48576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601f54604080516316a4744b60e11b8152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b158015611c9c57600080fd5b505af11580156118ef573d6000803e3d6000fd5b611cb933611d85565b611cf3576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6021805460ff19169215159290921761ff00191661010060ff9290921691909102179055565b611d2233611d85565b611d5c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601e80546001600160a01b039092166001600160a01b0319909216821790556000526007602052565b6000546001600160a01b0390811691161490565b600490565b611da733611d85565b611de1576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6107d18210611e215760405162461bcd60e51b815260040180806020018281038252602e8152602001806140ba602e913960400191505060405180910390fd5b80820280611e2e86612441565b1015611e81576040805162461bcd60e51b815260206004820152601b60248201527f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000604482015290519081900360640190fd5b60005b83811015611f8a57611eb286868684818110611e9c57fe5b905060200201356001600160a01b031685613104565b50600a6000868684818110611ec357fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16611f8257601f546001600160a01b03166314b6ca96868684818110611f0a57fe5b905060200201356001600160a01b0316611f298888868181106117e457fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611f6f57600080fd5b505af1925050508015611f80575060015b505b600101611e84565b506001600160a01b0385166000908152600a602052604090205460ff166114b557601f546001600160a01b03166314b6ca9686611fc681612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561200c57600080fd5b505af192505050801561201d575060015b6114b5576114b5565b600061203133611d85565b61206b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6040805163a9059cbb60e01b81523360048201526024810184905290516001600160a01b0385169163a9059cbb9160448083019260209291908290030181600087803b1580156120ba57600080fd5b505af11580156120ce573d6000803e3d6000fd5b505050506040513d60208110156120e457600080fd5b50519392505050565b60275481565b60076020526000908152604090205460ff1681565b600a6020526000908152604090205460ff1681565b61212633612f85565b612165576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b47336108fc6064848402611956565b601e546001600160a01b031681565b60096020526000908152604090205460ff1681565b6121a133612f85565b6121e0576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60006115b182600019611550565b61222233611d85565b61225c576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b611389811061229c5760405162461bcd60e51b81526004018080602001828103825260268152602001806141746026913960400191505060405180910390fd5b60005b8181101561198257600a60008484848181106122b757fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff1661237657601f546001600160a01b03166314b6ca968484848181106122fe57fe5b905060200201356001600160a01b031661231d8686868181106117e457fe5b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561236357600080fd5b505af1925050508015612374575060015b505b60010161229f565b6000611bf560265460285461300f90919063ffffffff16565b60215460ff1681565b6123a933612f85565b6123e8576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b600e5481565b600d5481565b6000611bf560265460245461300f90919063ffffffff16565b60235460ff1681565b6026546001600160a01b03821660009081526005602052604081205490916115b1919061300f565b602154610100900460ff1681565b601d60009054906101000a90046001600160a01b03166001600160a01b031663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156124c757600080fd5b505af11580156124db573d6000803e3d6000fd5b50505050565b60295481565b6023546000906201000090046001600160a01b031633148061250d575061250d33611d85565b61251657600080fd5b6025805460010190558261252a5760255492505b602354610100900460ff1615612573576040805162461bcd60e51b81526020600482015260096024820152682a393c9030b3b0b4b760b91b604482015290519081900360640190fd5b816125b957602754604080519182525184917f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2919081900360200190a2506027546115b1565b60008212156125db576027546125d390600084900361395a565b6027556125ec565b6027546125e890836130aa565b6027555b6027546001600160801b031015612609576001600160801b036027555b60275461262190678ac7230489e8000060001961153c565b602655601e546040805160016209351760e01b0319815290516001600160a01b039092169163fff6cae99160048082019260009290919082900301818387803b15801561266d57600080fd5b505af1158015612681573d6000803e3d6000fd5b505060275460408051918252518693507f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f292509081900360200190a25060275492915050565b60285481565b600c5481565b602354610100900460ff161590565b6000546001600160a01b031690565b60086020526000908152604090205460ff1681565b600061271133611d85565b61274b576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b811561278957612782600061277d600019612777876115446103e860275461300f90919063ffffffff16565b9061399c565b6124e7565b90506115b1565b611aa4600061277d856115446103e860275461300f90919063ffffffff16565b60136020526000908152604090205460ff1681565b604080518082019091526004815263050554d560e41b602082015290565b600b5481565b6127eb33611d85565b612825576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601555565b61283333612f85565b612872576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b620dbba0811061288157600080fd5b602055565b60115481565b601d546001600160a01b031681565b6000611aa43384846132b7565b6000611bf560265460295461300f90919063ffffffff16565b6128ca33611d85565b612904576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61293433611d85565b61296e576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b612989816115446103e8678ac7230489e8000060001961153c565b60285550565b60155481565b601f546001600160a01b031681565b6129ad33611d85565b6129e7576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b60005b828110156124db578160136000868685818110612a0357fe5b602090810292909201356001600160a01b0316835250810191909152604001600020805460ff19169115159190911790556001016129ea565b6017546001600160a01b031681565b60006115b1612a58611b9c565b601d54611bef90612a7890600290611544906001600160a01b0316612441565b8590613051565b612a8833612f85565b612ac7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b601780546001600160a01b039485166001600160a01b031991821617909155601880549385169382169390931790925560198054919093169116179055565b6019546001600160a01b031681565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b612b4933612f85565b612b88576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6023805460ff1916831515179055612bb181611544612710678ac7230489e8000060001961153c565b6024555050565b6018546001600160a01b031681565b612bd033611d85565b612c0a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b601655565b6023546201000090046001600160a01b031681565b612c2d33611d85565b612c67576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b612c9133611d85565b612ccb576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b612d4233612f85565b612d81576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b0382163014801590612da85750601d546001600160a01b03838116911614155b612db157600080fd5b6001600160a01b0382166000908152600a60205260409020805460ff19168215801591909117909155612e4e57601f5460408051630a5b654b60e11b81526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015612e3157600080fd5b505af1158015612e45573d6000803e3d6000fd5b50505050611b2b565b601f546001600160a01b03166314b6ca9683612e6981612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611c9c57600080fd5b612eb833612f85565b612ef7576040805162461bcd60e51b815260206004820152600b60248201526a085055551213d49256915160aa1b604482015290519081900360640190fd5b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b601c546001600160a01b031681565b60145481565b612f4033611d85565b612f7a576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b633b9aca0002601155565b6001600160a01b031660009081526001602052604090205460ff1690565b60165481565b612fb233611d85565b612fec576040805162461bcd60e51b815260206004820152600660248201526510a7aba722a960d11b604482015290519081900360640190fd5b6012805460ff1916911515919091179055565b601e54600160a01b900460ff1681565b6000611aa483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506139e4565b600082613060575060006115b1565b8282028284828161306d57fe5b0414611aa45760405162461bcd60e51b81526004018080602001828103825260218152602001806140e86021913960400191505060405180910390fd5b600082820183811015611aa4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008061311c6026548461305190919063ffffffff16565b90506131848160405180604001604052806014815260200173496e73756666696369656e742042616c616e636560601b81525060056000896001600160a01b03166001600160a01b03168152602001908152602001600020546132209092919063ffffffff16565b6001600160a01b0380871660009081526005602052604080822093909355908616815220546131b390826130aa565b6001600160a01b03808616600081815260056020526040902092909255602654908716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061320490859061300f565b60408051918252519081900360200190a3506001949350505050565b600081848411156132af5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561327457818101518382015260200161325c565b50505050905090810190601f1680156132a15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b602354600090610100900460ff16156132dc576132d5848484613104565b9050611aa4565b6001600160a01b03841660009081526001602052604090205460ff1615801561331e57506001600160a01b03831660009081526001602052604090205460ff16155b1561337857601e54600160a01b900460ff16613378576040805162461bcd60e51b8152602060048201526014602482015273151c98591a5b99c81b9bdd081bdc195b881e595d60621b604482015290519081900360640190fd5b600061338f6026548461305190919063ffffffff16565b6001600160a01b03861660009081526001602052604090205490915060ff161580156133c457506001600160a01b0384163014155b80156133de57506003546001600160a01b03858116911614155b80156133f85750601d546001600160a01b03858116911614155b801561341257506018546001600160a01b03858116911614155b801561342c57506019546001600160a01b03858116911614155b801561344657506017546001600160a01b03858116911614155b1561349d57600061345685612441565b9050602954828201111561349b5760405162461bcd60e51b815260040180806020018281038252603e815260200180614109603e913960400191505060405180910390fd5b505b601d546001600160a01b0386811691161480156134bc575060215460ff165b80156134e157506001600160a01b03841660009081526009602052604090205460ff16155b15613571576001600160a01b0384166000908152602260205260409020544211613548576040805162461bcd60e51b815260206004820152601360248201527262757920436f6f6c646f776e2065786973747360681b604482015290519081900360640190fd5b6021546001600160a01b038516600090815260226020526040902061010090910460ff16420190555b60125460ff161561365c576001600160a01b03851660009081526013602052604090205460ff16156135db576040805162461bcd60e51b815260206004820152600e60248201526d109bdd1cc818d85b9d081cd95b1b60921b604482015290519081900360640190fd5b6011543a1180156135f95750601d546001600160a01b038681169116145b1561365c576001600160a01b038416600081815260136020908152604091829020805460ff1916600117905581519283523a9083015280517fc05fe82fadc2c648ffcab1a84911ab5cd07e695a06d36020d37eb94c898eb2859281900390910190a15b6136668582613a49565b61366e613ab7565b1561367b5761367b613b0b565b6040805180820182526014815273496e73756666696369656e742042616c616e636560601b6020808301919091526001600160a01b0388166000908152600590915291909120546136cd918390613220565b6001600160a01b0386166000908152600560205260408120919091556136f286613f85565b1580613704575061370285613f85565b155b61372b57601d5461372690879084906001600160a01b03898116911614613fa4565b61372d565b815b6001600160a01b03861660009081526005602052604090205490915061375390826130aa565b6001600160a01b038087166000908152600560209081526040808320949094559189168152600a909152205460ff166137fa57601f546001600160a01b03166314b6ca96876137a181612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156137e757600080fd5b505af19250505080156137f8575060015b505b6001600160a01b0385166000908152600a602052604090205460ff1661388e57601f546001600160a01b03166314b6ca968661383581612441565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561387b57600080fd5b505af192505050801561388c575060015b505b601f54602054604080516001624d3b8760e01b031981526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b1580156138e157600080fd5b505af19250505080156138f2575060015b50846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61393d6026548561300f90919063ffffffff16565b60408051918252519081900360200190a350600195945050505050565b6000611aa483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613220565b6000828202600160ff1b811415806139bd5750600160ff1b84811690841614155b6139c657600080fd5b8215806139db5750838382816139d857fe5b05145b611aa457600080fd5b60008183613a335760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561327457818101518382015260200161325c565b506000838581613a3f57fe5b0495945050505050565b60285481111580613a7257506001600160a01b03821660009081526008602052604090205460ff165b611b2b576040805162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b604482015290519081900360640190fd5b601d546000906001600160a01b03163314801590613add5750602354610100900460ff16155b8015613aeb575060235460ff165b8015611bf557505060245430600090815260056020526040902054101590565b6023805461ff001916610100179055601a54601b54600091613b2c916115bd565b613b3857600b54613b3b565b60005b90506000613b5660265460245461300f90919063ffffffff16565b90506000613b786002611bef85611544600f548761300f90919063ffffffff16565b90506000613b86838361395a565b6040805160028082526060808301845293945090916020830190803683370190505090503081600081518110613bb857fe5b6001600160a01b039283166020918202929092010152600254825191169082906001908110613be357fe5b6001600160a01b03928316602091820292909201810191909152601c5460405163791ac94760e01b8152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015613c7d578181015183820152602001613c65565b505050509050019650505050505050600060405180830381600087803b158015613ca657600080fd5b505af1158015613cba573d6000803e3d6000fd5b505050506000613cd3824761395a90919063ffffffff16565b90506000613cee613ce589600261300f565b600f549061395a565b90506000613d036002611bef8481878e613051565b90506000613d2083611bef600c548761305190919063ffffffff16565b90506000613d3d84611bef600d548861305190919063ffffffff16565b90506000613d5a85611bef600e548961305190919063ffffffff16565b9050601f60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b158015613dac57600080fd5b505af193505050508015613dbe575060015b506018546040516000916001600160a01b03169061753090859084818181858888f193505050503d8060008114613e11576040519150601f19603f3d011682016040523d82523d6000602084013e613e16565b606091505b50506019546040519192506001600160a01b0316906175309084906000818181858888f193505050503d8060008114613e6b576040519150601f19603f3d011682016040523d82523d6000602084013e613e70565b606091505b5060009250508b159050613f6b57601c546017546040805163f305d71960e01b8152306004820152602481018f905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991889160c48082019260609290919082900301818588803b158015613ef357600080fd5b505af1158015613f07573d6000803e3d6000fd5b50505050506040513d6060811015613f1e57600080fd5b50506026547f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506908690613f52908e9061300f565b6040805192835260208301919091528051918290030190a15b50506023805461ff00191690555050505050505050505050565b6001600160a01b031660009081526007602052604090205460ff161590565b600060648215613fb357506016545b6000613fd782611544600f546115446010546064028a61300f90919063ffffffff16565b905083158015613fec57504360145460155401115b1561400457614001606361154487606461300f565b90505b3060009081526005602052604090205461401e90826130aa565b306000818152600560205260409020919091556026546001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9061406c90859061300f565b60408051918252519081900360200190a3614087858261395a565b969550505050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74474153204572726f723a206d61782061697264726f70206c696d6974206973203230303020616464726573736573536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682e474153204572726f723a206d61782061697264726f70206c696d69742069732035303020616464726573736573474153204572726f723a206d6178206164647265737320616c6c6f7765642069732035303030a26469706673582212203de004c53ec6f84b78636092a509fd4c6f0e591ecca12ff95f17321f73cdce9364736f6c63430007040033
Deployed Bytecode Sourcemap
11883:21032:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14325:51;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;27287:512;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27287:512:0;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17527:80;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30401:175;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30401:175:0;;:::i;17981:216::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17981:216:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;14383:31;;;;;;;;;;;;;:::i;29999:150::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29999:150:0;;;;;;;:::i;12945:36::-;;;;;;;;;;;;;:::i;17257:88::-;;;;;;;;;;;;;:::i;30786:903::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30786:903:0;;;;;;;;;;;;;;;-1:-1:-1;;;30786:903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30786:903:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30786:903:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30786:903:0;;;;;;;;;;-1:-1:-1;30786:903:0;;-1:-1:-1;30786:903:0;-1:-1:-1;30786:903:0;:::i;22804:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22804:218:0;;:::i;12853:85::-;;;;;;;;;;;;;:::i;28338:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28338:183:0;;;;;;;:::i;13056:39::-;;;;;;;;;;;;;:::i;18505:364::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18505:364:0;;;;;;;;;;;;;;;;;:::i;23435:250::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23435:250:0;;;;;;;;;:::i;28780:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28780:90:0;-1:-1:-1;;;;;28780:90:0;;:::i;29663:149::-;;;;;;;;;;;;;:::i;14421:19::-;;;;;;;;;;;;;:::i;29116:183::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29116:183:0;;;;;;;:::i;24313:164::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24313:164:0;;;;;;;;;;;:::i;28621:139::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28621:139:0;-1:-1:-1;;;;;28621:139:0;;:::i;3869:103::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3869:103:0;-1:-1:-1;;;;;3869:103:0;;:::i;17351:80::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;31693:739;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31693:739:0;;;;;;;;;;;;;;;-1:-1:-1;;;31693:739:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31693:739:0;;;;;;;;;;;;-1:-1:-1;31693:739:0;-1:-1:-1;31693:739:0;;:::i;29479:174::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;29479:174:0;;;;;;;;:::i;14447:27::-;;;;;;;;;;;;;:::i;12469:44::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12469:44:0;-1:-1:-1;;;;;12469:44:0;;:::i;12631:49::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12631:49:0;-1:-1:-1;;;;;12631:49:0;;:::i;23042:215::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23042:215:0;;:::i;13539:31::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13539:31:0;;;;;;;;;;;;;;12575:49;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12575:49:0;-1:-1:-1;;;;;12575:49:0;;:::i;27149:130::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27149:130:0;;;;;;;;;;:::i;18217:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18217:116:0;-1:-1:-1;;;;;18217:116:0;;:::i;32436:411::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32436:411:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;32436:411:0;;;;;;;;;;-1:-1:-1;32436:411:0;;-1:-1:-1;32436:411:0;-1:-1:-1;32436:411:0;:::i;30285:108::-;;;;;;;;;;;;;:::i;13705:38::-;;;;;;;;;;;;;:::i;26881:120::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26881:120:0;;;;;;;;;;:::i;12812:34::-;;;;;;;;;;;;;:::i;12771:::-;;;;;;;;;;;;;:::i;28989:111::-;;;;;;;;;;;;;:::i;13851:31::-;;;;;;;;;;;;;:::i;17699:129::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17699:129:0;-1:-1:-1;;;;;17699:129:0;;:::i;13750:38::-;;;;;;;;;;;;;:::i;28535:74::-;;;;;;;;;;;;;:::i;14785:56::-;;;;;;;;;;;;;:::i;15243:811::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15243:811:0;;;;;;;:::i;14725:53::-;;;;;;;;;;;;;:::i;12730:34::-;;;;;;;;;;;;;:::i;28884:85::-;;;;;;;;;;;;;:::i;17613:78::-;;;;;;;;;;;;;:::i;12520:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12520:48:0;-1:-1:-1;;;;;12520:48:0;;:::i;14850:371::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14850:371:0;;;;;;;;;:::i;13102:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13102:45:0;-1:-1:-1;;;;;13102:45:0;;:::i;17437:84::-;;;;;;;;;;;;;:::i;12689:34::-;;;;;;;;;;;;;:::i;23693:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23693:105:0;;:::i;29319:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29319:136:0;;:::i;13010:39::-;;;;;;;;;;;;;:::i;13513:19::-;;;;;;;;;;;;;:::i;18341:156::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18341:156:0;;;;;;;;:::i;30157:114::-;;;;;;;;;;;;;:::i;3662:94::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3662:94:0;-1:-1:-1;;;;;3662:94:0;;:::i;30584:170::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30584:170:0;;:::i;13192:29::-;;;;;;;;;;;;;:::i;13620:38::-;;;;;;;;;;;;;:::i;24094:211::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24094:211:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24094:211:0;;;;;;;;;;;;-1:-1:-1;24094:211:0;-1:-1:-1;24094:211:0;;;;:::i;13275:36::-;;;;;;;;;;;;;:::i;29822:167::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29822:167:0;;:::i;27813:297::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27813:297:0;;;;;;;;;;;;;;;;;;;:::i;13360:29::-;;;;;;;;;;;;;:::i;17840:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;17840:133:0;;;;;;;;;;:::i;28120:208::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28120:208:0;;;;;;;;;:::i;13318:35::-;;;;;;;;;;;;;:::i;23277:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23277:121:0;;:::i;13972:21::-;;;;;;;;;;;;;:::i;3764:97::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3764:97:0;-1:-1:-1;;;;;3764:97:0;;:::i;4095:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4095:173:0;-1:-1:-1;;;;;4095:173:0;;:::i;26522:347::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;26522:347:0;;;;;;;;;;:::i;27013:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27013:128:0;;;;;;;;;;:::i;13482:24::-;;;;;;;;;;;;;:::i;13156:29::-;;;;;;;;;;;;;:::i;23952:134::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23952:134:0;;:::i;3980:107::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3980:107:0;-1:-1:-1;;;;;3980:107:0;;:::i;13230:36::-;;;;;;;;;;;;;:::i;23828:116::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23828:116:0;;;;:::i;13580:31::-;;;;;;;;;;;;;:::i;14325:51::-;;;;:::o;27287:512::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;27447:12:::1;:28:::0;;;27486:13:::1;:30:::0;;;27527:12:::1;:28:::0;;;27566:6:::1;:16:::0;;;27604:65:::1;27575:7:::0;27604:52:::1;27542:13:::0;27604:52;27462:13;27502:14;27604:17:::1;:33::i;:::-;:37:::0;::::1;:52::i;:65::-;27593:8;:76:::0;27680:14:::1;:32:::0;;;27757:1:::1;27697:15:::0;27742:16:::1;27731:8;;:27;27723:68;;;::::0;;-1:-1:-1;;;27723:68:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27287:512:::0;;;;;:::o;17527:80::-;17599:5;;;;;;;;;;;;-1:-1:-1;;;17599:5:0;;;;17527:80;:::o;30401:175::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;30522:46:::1;30544:23:::0;30522:17:::1;30534:4;14296:22:::0;-1:-1:-1;;14644:38:0::1;;14629:54:::0;;30522:11:::1;:17::i;:::-;:21:::0;::::1;:46::i;:::-;30504:15;:64:::0;-1:-1:-1;30401:175:0:o;17981:216::-;18085:10;18056:4;18073:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;18073:32:0;;;;;;;;;;;:41;;;18130:37;;;;;;;18056:4;;18073:32;;18085:10;;18130:37;;;;;;;;-1:-1:-1;18185:4:0;17981:216;;;;;:::o;14383:31::-;;;;:::o;29999:150::-;30079:4;30135:6;30103:29;30123:8;30103:19;:29::i;:::-;:38;;29999:150;-1:-1:-1;;;29999:150:0:o;12945:36::-;;;;:::o;17257:88::-;17330:12;;17257:88;:::o;30786:903::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;30935:3:::1;30916:22:::0;::::1;30908:79;;;;-1:-1:-1::0;;;30908:79:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31025:33:::0;;::::1;31017:85;;;;-1:-1:-1::0;;;31017:85:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31111:12;31140:6:::0;31136:82:::1;31150:20:::0;;::::1;31136:82;;;31201:6;;31208:1;31201:9;;;;;;;;;::::0;;;::::1;;31194:16:::0;;;::::1;::::0;-1:-1:-1;31172:3:0::1;;31136:82;;;;31253:4;31234:15;31244:4;31234:9;:15::i;:::-;:23;;31226:63;;;::::0;;-1:-1:-1;;;31226:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;31302:6;31298:250;31312:20:::0;;::::1;31298:250;;;31349:43;31364:4;31369:9;;31379:1;31369:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;31369:12:0::1;31382:6;;31389:1;31382:9;;;;;;;;;;;;;31349:14;:43::i;:::-;;31407:16;:30;31424:9;;31434:1;31424:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;31424:12:0::1;31407:30:::0;;-1:-1:-1;31407:30:0;::::1;::::0;;;;;;-1:-1:-1;31407:30:0;;::::1;;31403:138;;31458:11;::::0;-1:-1:-1;;;;;31458:11:0::1;:20;31479:9:::0;;31489:1;31479:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;31479:12:0::1;31493:23;31503:9;;31513:1;31503:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;31503:12:0::1;31493:9;:23::i;:::-;31458:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;31458:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;31454:75:::0;::::1;31334:3;;31298:250;;;-1:-1:-1::0;;;;;;31585:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;31581:105;;31624:11;::::0;-1:-1:-1;;;;;31624:11:0::1;:20;31645:4:::0;31651:15:::1;31645:4:::0;31651:9:::1;:15::i;:::-;31624:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;31624:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;31620:59:::0;::::1;3545:1;30786:903:::0;;;;;:::o;22804:218::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;22948:20:::1;::::0;22908:21:::1;::::0;-1:-1:-1;;;;;22948:20:0::1;22940:74;23010:3;22979:28:::0;;::::1;:34;;22940:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;3645:1;22804:218:::0;:::o;12853:85::-;;;;:::o;28338:183::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;28436:15:::1;:25:::0;;;;28472:26:::1;:41:::0;28338:183::o;13056:39::-;;;;;;:::o;18505:364::-;-1:-1:-1;;;;;18625:19:0;;18605:4;18625:19;;;:11;:19;;;;;;;;18645:10;18625:31;;;;;;;;-1:-1:-1;;18625:46:0;18622:180;;18721:69;;;;;;;;;;;-1:-1:-1;;;18721:69:0;;;;;;;;-1:-1:-1;;;;;18721:19:0;;-1:-1:-1;18721:19:0;;;:11;:19;;;;;18741:10;18721:31;;;;;;;;;;:69;;18757:6;;18721:35;:69::i;:::-;-1:-1:-1;;;;;18687:19:0;;;;;;:11;:19;;;;;;;;18707:10;18687:31;;;;;;;:103;18622:180;18821:40;18835:6;18843:9;18854:6;18821:13;:40::i;:::-;18814:47;;18505:364;;;;;;:::o;23435:250::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;23521:11:::1;:21:::0;;-1:-1:-1;;;;23521:21:0::1;-1:-1:-1::0;;;23521:21:0;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;23556:11:::0;::::1;;:30:::0;::::1;;;-1:-1:-1::0;23571:10:0::1;::::0;:15;23556:30:::1;23553:125;;;23615:12;23602:10;:25:::0;23642:10:::1;:24:::0;;;23553:125:::1;23435:250:::0;;:::o;28780:90::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;28846:6:::1;:16:::0;;-1:-1:-1;;;;;28846:16:0;;::::1;::::0;::::1;-1:-1:-1::0;;;;;;28846:16:0;;::::1;::::0;;;::::1;::::0;;28780:90::o;29663:149::-;29799:4;;29787;;-1:-1:-1;;;;;29787:4:0;;;29716:7;29777:15;;;:9;:15;;;;;;;29766:4;;;;;29756:15;;;;;29716:7;;29743:61;;29799:4;;29744:49;;29777:15;29744:28;;-1:-1:-1;;14629:54:0;29744:11;:28::i;:::-;:32;;:49::i;:::-;29743:55;;:61::i;:::-;29736:68;;29663:149;:::o;14421:19::-;;;;:::o;29116:183::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;29226:11:::1;::::0;:65:::1;::::0;;-1:-1:-1;;;29226:65:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;-1:-1:-1;;;;;29226:11:0;;::::1;::::0;:35:::1;::::0;:65;;;;;:11:::1;::::0;:65;;;;;;;;:11;;:65;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;24313:164:::0;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;24397:18:::1;:28:::0;;-1:-1:-1;;24397:28:0::1;::::0;::::1;;::::0;;;::::1;-1:-1:-1::0;;24436:33:0::1;24397:28;;24436:33:::0;;;::::1;::::0;;;::::1;;::::0;;24313:164::o;28621:139::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;28684:12:::1;:36:::0;;-1:-1:-1;;;;;28684:36:0;;::::1;-1:-1:-1::0;;;;;;28684:36:0;;::::1;::::0;::::1;::::0;;:12:::1;28731:21:::0;:11:::1;:21;::::0;28621:139::o;3869:103::-;3924:4;3959:5;-1:-1:-1;;;;;3959:5:0;;;3948:16;;;;3869:103::o;17351:80::-;12295:1;17351:80;:::o;31693:739::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;31837:4:::1;31818:23:::0;::::1;31810:81;;;;-1:-1:-1::0;;;31810:81:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31938:25:::0;;::::1;::::0;31980:15:::1;31990:4:::0;31980:9:::1;:15::i;:::-;:23;;31972:63;;;::::0;;-1:-1:-1;;;31972:63:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;32048:6;32044:247;32058:20:::0;;::::1;32044:247;;;32095:40;32110:4;32115:9;;32125:1;32115:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;32115:12:0::1;32128:6;32095:14;:40::i;:::-;;32150:16;:30;32167:9;;32177:1;32167:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;32167:12:0::1;32150:30:::0;;-1:-1:-1;32150:30:0;::::1;::::0;;;;;;-1:-1:-1;32150:30:0;;::::1;;32146:138;;32201:11;::::0;-1:-1:-1;;;;;32201:11:0::1;:20;32222:9:::0;;32232:1;32222:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32222:12:0::1;32236:23;32246:9;;32256:1;32246:12;;;;;;32236:23;32201:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;32201:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32197:75:::0;::::1;32080:3;;32044:247;;;-1:-1:-1::0;;;;;;32328:22:0;::::1;;::::0;;;:16:::1;:22;::::0;;;;;::::1;;32324:105;;32367:11;::::0;-1:-1:-1;;;;;32367:11:0::1;:20;32388:4:::0;32394:15:::1;32388:4:::0;32394:9:::1;:15::i;:::-;32367:43;;;;;;;;;;;;;-1:-1:-1::0;;;;;32367:43:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32363:59;;;;29479:174:::0;29564:12;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;29596:49:::1;::::0;;-1:-1:-1;;;29596:49:0;;29626:10:::1;29596:49;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;;;;;29596:29:0;::::1;::::0;::::1;::::0;:49;;;;;::::1;::::0;;;;;;;;-1:-1:-1;29596:29:0;:49;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;29596:49:0;;29479:174;-1:-1:-1;;;29479:174:0:o;14447:27::-;;;;:::o;12469:44::-;;;;;;;;;;;;;;;:::o;12631:49::-;;;;;;;;;;;;;;;:::o;23042:215::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;23153:21:::1;23193:10;23185:64;23245:3;23214:28:::0;;::::1;:34;::::0;13539:31;;;-1:-1:-1;;;;;13539:31:0;;:::o;12575:49::-;;;;;;;;;;;;;;;:::o;27149:130::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27238:24:0;;;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;27238:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27149:130::o;18217:116::-;18272:4;18296:29;18304:7;-1:-1:-1;;18296:7:0;:29::i;32436:411::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;32551:4:::1;32532:23:::0;::::1;32524:73;;;;-1:-1:-1::0;;;32524:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32652:6;32648:196;32662:20:::0;;::::1;32648:196;;;32703:16;:30;32720:9;;32730:1;32720:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;32720:12:0::1;32703:30:::0;;-1:-1:-1;32703:30:0;::::1;::::0;;;;;;-1:-1:-1;32703:30:0;;::::1;;32699:138;;32754:11;::::0;-1:-1:-1;;;;;32754:11:0::1;:20;32775:9:::0;;32785:1;32775:12;;::::1;;;;;;;;;;;-1:-1:-1::0;;;;;32775:12:0::1;32789:23;32799:9;;32809:1;32799:12;;;;;;32789:23;32754:59;;;;;;;;;;;;;-1:-1:-1::0;;;;;32754:59:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;32750:75:::0;::::1;32684:3;;32648:196;;30285:108:::0;30336:7;30363:22;30380:4;;30363:12;;:16;;:22;;;;:::i;13705:38::-;;;;;;:::o;26881:120::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26965:19:0;;;::::1;;::::0;;;:11:::1;:19;::::0;;;;:28;;-1:-1:-1;;26965:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26881:120::o;12812:34::-;;;;:::o;12771:::-;;;;:::o;28989:111::-;29042:7;29069:23;29087:4;;29069:13;;:17;;:23;;;;:::i;13851:31::-;;;;;;:::o;17699:129::-;17815:4;;-1:-1:-1;;;;;17792:18:0;;17765:7;17792:18;;;:9;:18;;;;;;17765:7;;17792:28;;:18;:22;:28::i;13750:38::-;;;;;;;;;:::o;28535:74::-;28589:4;;;;;;;;;-1:-1:-1;;;;;28589:4:0;-1:-1:-1;;;;;28577:22:0;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28535:74::o;14785:56::-;;;;:::o;15243:811::-;14055:6;;15321:7;;14055:6;;;-1:-1:-1;;;;;14055:6:0;14041:10;:20;;:43;;;14065:19;14073:10;14065:7;:19::i;:::-;14033:52;;;;;;15341:12:::1;:14:::0;;::::1;;::::0;;15369:10;15366:61:::1;;15403:12;;15395:20;;15366:61;15448:6;::::0;::::1;::::0;::::1;;;15447:7;15439:29;;;::::0;;-1:-1:-1;;;15439:29:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;15439:29:0;;;;;;;;;;;;;::::1;;15485:16:::0;15481:118:::1;;15540:12;::::0;15523:30:::1;::::0;;;;;;15533:5;;15523:30:::1;::::0;;;;;::::1;::::0;;::::1;-1:-1:-1::0;15575:12:0::1;::::0;15568:19:::1;;15481:118;15629:1;15615:11;:15;15611:188;;;15662:12;::::0;:39:::1;::::0;15687:12:::1;::::0;;::::1;15662:16;:39::i;:::-;15647:12;:54:::0;15611:188:::1;;;15749:12;::::0;:38:::1;::::0;15774:11;15749:16:::1;:38::i;:::-;15734:12;:53:::0;15611:188:::1;15815:12;::::0;-1:-1:-1;;;;;;15811:83:0::1;;;-1:-1:-1::0;;;;;15857:12:0::1;:25:::0;15811:83:::1;15925:12;::::0;15913:25:::1;::::0;14296:22;-1:-1:-1;;14644:38:0::1;::::0;15913:25:::1;15906:4;:32:::0;15949:12:::1;::::0;:19:::1;::::0;;-1:-1:-1;;;;;;15949:19:0;;;;-1:-1:-1;;;;;15949:12:0;;::::1;::::0;:17:::1;::::0;:19:::1;::::0;;::::1;::::0;:12:::1;::::0;:19;;;;;;;;:12;;:19;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16003:12:0::1;::::0;15986:30:::1;::::0;;;;;;15996:5;;-1:-1:-1;15986:30:0::1;::::0;-1:-1:-1;15986:30:0;;;;::::1;::::0;;::::1;-1:-1:-1::0;16034:12:0::1;::::0;15243:811;;;;:::o;14725:53::-;;;;:::o;12730:34::-;;;;:::o;28884:85::-;28955:6;;;;;;;28954:7;;28884:85::o;17613:78::-;17665:7;17683:5;-1:-1:-1;;;;;17683:5:0;17613:78;:::o;12520:48::-;;;;;;;;;;;;;;;:::o;14850:371::-;14946:17;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;14980:6:::1;14977:227;;;15014:71;15021:1;15023:61;-1:-1:-1::0;;15027:48:0::1;15054:20;15027:22;15044:4;15027:12;;:16;;:22;;;;:::i;:48::-;15023:57:::0;::::1;:61::i;:::-;15014:6;:71::i;:::-;15002:83;;14977:227;;;15129:63;15136:1;15142:48;15169:20;15142:22;15159:4;15142:12;;:16;;:22;;;;:::i;13102:45::-:0;;;;;;;;;;;;;;;:::o;17437:84::-;17511:7;;;;;;;;;;;;-1:-1:-1;;;17511:7:0;;;;17437:84;:::o;12689:34::-;;;;:::o;23693:105::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;23765:10:::1;:25:::0;23693:105::o;29319:136::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;29409:6:::1;29403:3;:12;29395:21;;;::::0;::::1;;29427:14;:20:::0;29319:136::o;13010:39::-;;;;:::o;13513:19::-;;;-1:-1:-1;;;;;13513:19:0;;:::o;18341:156::-;18421:4;18445:44;18459:10;18471:9;18482:6;18445:13;:44::i;30157:114::-;30211:7;30238:25;30258:4;;30238:15;;:19;;:25;;;;:::i;3662:94::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3722:19:0::1;;::::0;;;3744:4:::1;3722:19;::::0;;;;;;;:26;;-1:-1:-1;;3722:26:0::1;::::0;;::::1;::::0;;3662:94::o;30584:170::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;30699:47:::1;30721:24:::0;30699:17:::1;30711:4;14296:22:::0;-1:-1:-1;;14644:38:0::1;::::0;30699:47:::1;30684:12;:62:::0;-1:-1:-1;30584:170:0:o;13192:29::-;;;;:::o;13620:38::-;;;-1:-1:-1;;;;;13620:38:0;;:::o;24094:211::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;24198:9:::1;24193:105;24209:20:::0;;::::1;24193:105;;;24280:6;24251:12;:26;24264:9;;24274:1;24264:12;;;;;;;;::::0;;::::1;::::0;;;::::1;;-1:-1:-1::0;;;;;24264:12:0::1;24251:26:::0;;-1:-1:-1;24251:26:0;::::1;::::0;;;;;;-1:-1:-1;24251:26:0;:35;;-1:-1:-1;;24251:35:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;24231:3:0::1;24193:105;;13275:36:::0;;;-1:-1:-1;;;;;13275:36:0;;:::o;29822:167::-;29890:7;29917:64;29958:22;:20;:22::i;:::-;29940:4;;29917:36;;29930:22;;29950:1;;29930:15;;-1:-1:-1;;;;;29940:4:0;29930:9;:15::i;:22::-;29917:8;;:12;:36::i;27813:297::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;27958:21:::1;:46:::0;;-1:-1:-1;;;;;27958:46:0;;::::1;-1:-1:-1::0;;;;;;27958:46:0;;::::1;;::::0;;;28015:20:::1;:44:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;28070:14:::1;:32:::0;;;;;::::1;::::0;::::1;;::::0;;27813:297::o;13360:29::-;;;-1:-1:-1;;;;;13360:29:0;;:::o;17840:133::-;-1:-1:-1;;;;;17942:19:0;;;17924:7;17942:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;17840:133::o;28120:208::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;28226:11:::1;:22:::0;;-1:-1:-1;;28226:22:0::1;::::0;::::1;;;::::0;;28275:45:::1;28298:21:::0;28275:18:::1;28287:5;14296:22:::0;-1:-1:-1;;14644:38:0::1;::::0;28275:45:::1;28259:13;:61:::0;-1:-1:-1;;28120:208:0:o;13318:35::-;;;-1:-1:-1;;;;;13318:35:0;;:::o;23277:121::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;23355:14:::1;:27:::0;23277:121::o;13972:21::-;;;;;;-1:-1:-1;;;;;13972:21:0;;:::o;3764:97::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;3826:19:0::1;3848:5;3826:19:::0;;;:14:::1;:19;::::0;;;;:27;;-1:-1:-1;;3826:27:0::1;::::0;;3764:97::o;4095:173::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;4171:5:::1;:11:::0;;-1:-1:-1;;;;;;4171:11:0::1;-1:-1:-1::0;;;;;4171:11:0;::::1;::::0;;::::1;::::0;;4193:19;;;-1:-1:-1;4193:19:0::1;::::0;;;;;;;;:26;;-1:-1:-1;;4193:26:0::1;::::0;;::::1;::::0;;;4235:25;;;;;;;::::1;::::0;;;;;;;;;::::1;4095:173:::0;:::o;26522:347::-;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26619:23:0;::::1;26637:4;26619:23;::::0;::::1;::::0;:41:::1;;-1:-1:-1::0;26656:4:0::1;::::0;-1:-1:-1;;;;;26646:14:0;;::::1;26656:4:::0;::::1;26646:14;;26619:41;26611:50;;;::::0;::::1;;-1:-1:-1::0;;;;;26672:24:0;::::1;;::::0;;;:16:::1;:24;::::0;;;;:33;;-1:-1:-1;;26672:33:0::1;::::0;::::1;::::0;::::1;::::0;;;::::1;::::0;;;26716:146:::1;;26741:11;::::0;:31:::1;::::0;;-1:-1:-1;;;26741:31:0;;-1:-1:-1;;;;;26741:31:0;;::::1;;::::0;::::1;::::0;:11:::1;:31:::0;;;;;;;;:11;::::1;::::0;:20:::1;::::0;:31;;;;;:11;;:31;;;;;;:11;;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;26716:146;;;26803:11;::::0;-1:-1:-1;;;;;26803:11:0::1;:20;26824:6:::0;26832:17:::1;26824:6:::0;26832:9:::1;:17::i;:::-;26803:47;;;;;;;;;;;;;-1:-1:-1::0;;;;;26803:47:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;27013:128:::0;3603:24;3616:10;3603:12;:24::i;:::-;3595:48;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;-1:-1:-1;;;3595:48:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27101:23:0;;;::::1;;::::0;;;:15:::1;:23;::::0;;;;:32;;-1:-1:-1;;27101:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27013:128::o;13482:24::-;;;-1:-1:-1;;;;;13482:24:0;;:::o;13156:29::-;;;;:::o;23952:134::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;24073:5:::1;24050:28;24036:11;:42:::0;23952:134::o;3980:107::-;-1:-1:-1;;;;;4060:19:0;4036:4;4060:19;;;:14;:19;;;;;;;;;3980:107::o;13230:36::-;;;;:::o;23828:116::-;3513:19;3521:10;3513:7;:19::i;:::-;3505:38;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;-1:-1:-1;;;3505:38:0;;;;;;;;;;;;;;;23907:19:::1;:29:::0;;-1:-1:-1;;23907:29:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23828:116::o;13580:31::-;;;-1:-1:-1;;;13580:31:0;;;;;:::o;905:132::-;963:7;990:39;994:1;997;990:39;;;;;;;;;;;;;;;;;:3;:39::i;649:250::-;707:7;731:6;727:47;;-1:-1:-1;761:1:0;754:8;;727:47;798:5;;;802:1;798;:5;:1;822:5;;;;;:10;814:56;;;;-1:-1:-1;;;814:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;122:181;180:7;212:5;;;236:6;;;;228:46;;;;;-1:-1:-1;;;228:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;21256:388;21349:4;21366:15;21384:16;21395:4;;21384:6;:10;;:16;;;;:::i;:::-;21366:34;;21431:54;21453:7;21431:54;;;;;;;;;;;;;-1:-1:-1;;;21431:54:0;;;:9;:17;21441:6;-1:-1:-1;;;;;21431:17:0;-1:-1:-1;;;;;21431:17:0;;;;;;;;;;;;;:21;;:54;;;;;:::i;:::-;-1:-1:-1;;;;;21411:17:0;;;;;;;:9;:17;;;;;;:74;;;;21519:20;;;;;;;:33;;21544:7;21519:24;:33::i;:::-;-1:-1:-1;;;;;21496:20:0;;;;;;;:9;:20;;;;;:56;;;;21608:4;;21568:46;;;;;;21596:17;;:7;;:11;:17::i;:::-;21568:46;;;;;;;;;;;;;;;-1:-1:-1;21632:4:0;;21256:388;-1:-1:-1;;;;21256:388:0:o;451:192::-;537:7;573:12;565:6;;;;557:29;;;;-1:-1:-1;;;557:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;609:5:0;;;451:192::o;18877:2345::-;18989:6;;18969:4;;18989:6;;;;;18986:63;;;19005:41;19020:6;19028:9;19039:6;19005:14;:41::i;:::-;18998:48;;;;18986:63;-1:-1:-1;;;;;19065:22:0;;;;;;:14;:22;;;;;;;;19064:23;:53;;;;-1:-1:-1;;;;;;19092:25:0;;;;;;:14;:25;;;;;;;;19091:26;19064:53;19061:127;;;19141:11;;-1:-1:-1;;;19141:11:0;;;;19133:43;;;;;-1:-1:-1;;;19133:43:0;;;;;;;;;;;;-1:-1:-1;;;19133:43:0;;;;;;;;;;;;;;;19200:15;19218:16;19229:4;;19218:6;:10;;:16;;;;:::i;:::-;-1:-1:-1;;;;;19252:22:0;;;;;;:14;:22;;;;;;19200:34;;-1:-1:-1;19252:22:0;;19251:23;:53;;;;-1:-1:-1;;;;;;19278:26:0;;19299:4;19278:26;;19251:53;:84;;;;-1:-1:-1;19330:4:0;;-1:-1:-1;;;;;19309:26:0;;;19330:4;;19309:26;;19251:84;:105;;;;-1:-1:-1;19352:4:0;;-1:-1:-1;;;;;19339:17:0;;;19352:4;;19339:17;;19251:105;:142;;;;-1:-1:-1;19373:20:0;;-1:-1:-1;;;;;19360:33:0;;;19373:20;;19360:33;;19251:142;:173;;;;-1:-1:-1;19410:14:0;;-1:-1:-1;;;;;19397:27:0;;;19410:14;;19397:27;;19251:173;:212;;;;-1:-1:-1;19442:21:0;;-1:-1:-1;;;;;19429:34:0;;;19442:21;;19429:34;;19251:212;19247:405;;;19479:18;19500:20;19510:9;19500;:20::i;:::-;19479:41;;19569:15;;19557:7;19544:10;:20;19543:41;;19535:115;;;;-1:-1:-1;;;19535:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19247:405;;19686:4;;-1:-1:-1;;;;;19676:14:0;;;19686:4;;19676:14;:49;;;;-1:-1:-1;19707:18:0;;;;19676:49;:94;;;;-1:-1:-1;;;;;;19743:27:0;;;;;;:16;:27;;;;;;;;19742:28;19676:94;19672:281;;;-1:-1:-1;;;;;19795:24:0;;;;;;:13;:24;;;;;;19822:15;-1:-1:-1;19787:73:0;;;;;-1:-1:-1;;;19787:73:0;;;;;;;;;;;;-1:-1:-1;;;19787:73:0;;;;;;;;;;;;;;;19920:21;;-1:-1:-1;;;;;19875:24:0;;;;;;:13;:24;;;;;19920:21;;;;;;19902:15;:39;19875:66;;19672:281;20007:19;;;;20004:288;;;-1:-1:-1;;;;;20051:20:0;;;;;;:12;:20;;;;;;;;20050:21;20042:47;;;;;-1:-1:-1;;;20042:47:0;;;;;;;;;;;;-1:-1:-1;;;20042:47:0;;;;;;;;;;;;;;;20121:11;;20107;:25;:43;;;;-1:-1:-1;20146:4:0;;-1:-1:-1;;;;;20136:14:0;;;20146:4;;20136:14;20107:43;20104:177;;;-1:-1:-1;;;;;20170:23:0;;;;;;:12;:23;;;;;;;;;:30;;-1:-1:-1;;20170:30:0;20196:4;20170:30;;;20224:41;;;;;20253:11;20224:41;;;;;;;;;;;;;;;;20104:177;20345:29;20358:6;20366:7;20345:12;:29::i;:::-;20390:16;:14;:16::i;:::-;20387:35;;;20409:10;:8;:10::i;:::-;20481:54;;;;;;;;;;;-1:-1:-1;;;20481:54:0;;;;;;;;-1:-1:-1;;;;;20481:17:0;;-1:-1:-1;20481:17:0;;;:9;:17;;;;;;;;:54;;20503:7;;20481:21;:54::i;:::-;-1:-1:-1;;;;;20461:17:0;;;;;;:9;:17;;;;;:74;;;;20575:21;20471:6;20575:13;:21::i;:::-;20574:22;:51;;;;20601:24;20615:9;20601:13;:24::i;:::-;20600:25;20574:51;20573:110;;20677:4;;20639:44;;20647:6;;20655:7;;-1:-1:-1;;;;;20664:17:0;;;20677:4;;20664:17;20639:7;:44::i;:::-;20573:110;;;20629:7;20573:110;-1:-1:-1;;;;;20717:20:0;;;;;;:9;:20;;;;;;20548:135;;-1:-1:-1;20717:40:0;;20548:135;20717:24;:40::i;:::-;-1:-1:-1;;;;;20694:20:0;;;;;;;:9;:20;;;;;;;;:63;;;;20803:24;;;;;:16;:24;;;;;;;20799:119;;20848:11;;-1:-1:-1;;;;;20848:11:0;:20;20869:6;20877:17;20869:6;20877:9;:17::i;:::-;20848:47;;;;;;;;;;;;;-1:-1:-1;;;;;20848:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20844:63;;-1:-1:-1;;;;;20934:27:0;;;;;;:16;:27;;;;;;;;20930:129;;20982:11;;-1:-1:-1;;;;;20982:11:0;:20;21003:9;21014:20;21003:9;21014;:20::i;:::-;20982:53;;;;;;;;;;;;;-1:-1:-1;;;;;20982:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20978:69;;21075:11;;21095:14;;21075:35;;;-1:-1:-1;;;;;;21075:35:0;;;;;;;;;;-1:-1:-1;;;;;21075:11:0;;;;:19;;:35;;;;;:11;;:35;;;;;;;;:11;;:35;;;;;;;;;;;;;;;;;;;;;;;;;21071:51;21156:9;-1:-1:-1;;;;;21139:53:0;21148:6;-1:-1:-1;;;;;21139:53:0;;21167:24;21186:4;;21167:14;:18;;:24;;;;:::i;:::-;21139:53;;;;;;;;;;;;;;;-1:-1:-1;21210:4:0;;18877:2345;-1:-1:-1;;;;;18877:2345:0:o;309:136::-;367:7;394:43;398:1;401;394:43;;;;;;;;;;;;;;;;;:3;:43::i;1391:239::-;1447:6;1477:5;;;-1:-1:-1;;;1503:15:0;;;;:55;;-1:-1:-1;;;;1523:14:0;;;1543;;;1522:36;;1503:55;1495:64;;;;;;1579:6;;;1578:24;;;1600:1;1595;1591;:5;;;;;;:10;1578:24;1570:33;;;;;1043:189;1129:7;1164:12;1157:5;1149:28;;;;-1:-1:-1;;;1149:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1188:9;1204:1;1200;:5;;;;;;;1043:189;-1:-1:-1;;;;;1043:189:0:o;21652:168::-;21751:12;;21740:7;:23;;:50;;;-1:-1:-1;;;;;;21767:23:0;;;;;;:15;:23;;;;;;;;21740:50;21732:80;;;;;-1:-1:-1;;;21732:80:0;;;;;;;;;;;;-1:-1:-1;;;21732:80:0;;;;;;;;;;;;;;22597:197;22684:4;;22646;;-1:-1:-1;;;;;22684:4:0;22670:10;:18;;;;:38;;-1:-1:-1;22702:6:0;;;;;;;22701:7;22670:38;:62;;;;-1:-1:-1;22721:11:0;;;;22670:62;:116;;;;-1:-1:-1;;22773:13:0;;22763:4;22745:24;;;;:9;:24;;;;;;:41;;;22597:197::o;24505:1997::-;13929:6;:13;;-1:-1:-1;;13929:13:0;;;;;24600:15:::1;::::0;24617:26:::1;::::0;13929:13;;24584:60:::1;::::0;:15:::1;:60::i;:::-;:79;;24651:12;;24584:79;;;24647:1;24584:79;24554:109;;24674:20;24697:23;24715:4;;24697:13;;:17;;:23;;;;:::i;:::-;24674:46;;24733:23;24759:58;24815:1;24759:51;24790:19;24759:26;24776:8;;24759:12;:16;;:26;;;;:::i;:58::-;24733:84:::0;-1:-1:-1;24828:20:0::1;24851:33;:12:::0;24733:84;24851:16:::1;:33::i;:::-;24921:16;::::0;;24935:1:::1;24921:16:::0;;;24897:21:::1;24921:16:::0;;::::1;::::0;;24828:56;;-1:-1:-1;24921:16:0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;24921:16:0::1;24897:40;;24966:4;24948;24953:1;24948:7;;;;;;;;-1:-1:-1::0;;;;;24948:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;24992:4:::1;::::0;24982:7;;24992:4;::::1;::::0;24982;;24992;;24982:7;::::1;;;;;-1:-1:-1::0;;;;;24982:14:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:14;;;;25067:6:::1;::::0;:188:::1;::::0;-1:-1:-1;;;25067:188:0;;::::1;::::0;::::1;::::0;;;25009:21:::1;25067:188:::0;;;;;;25209:4:::1;25067:188:::0;;;;;;25229:15:::1;25067:188:::0;;;;;;;;;;;;;;;;;;;;;25033:21:::1;::::0;25067:6;;;::::1;::::0;:57:::1;::::0;25139:12;;25009:21;;25182:4;;25067:188;;;;;;;;;;::::1;::::0;::::1;::::0;;;25009:21;25067:188:::1;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;25268:17;25288:40;25314:13;25288:21;:25;;:40;;;;:::i;:::-;25268:60:::0;-1:-1:-1;25341:19:0::1;25363:40;25376:26;:19:::0;25400:1:::1;25376:23;:26::i;:::-;25363:8;::::0;;:12:::1;:40::i;:::-;25341:62:::0;-1:-1:-1;25424:26:0::1;25453:58;25509:1;25453:51;25341:62:::0;25453:51;:9;25467:19;25453:13:::1;:34::i;:58::-;25424:87;;25522:27;25552:45;25585:11;25552:28;25566:13;;25552:9;:13;;:28;;;;:::i;:45::-;25522:75;;25608:26;25637:44;25669:11;25637:27;25651:12;;25637:9;:13;;:27;;;;:::i;:44::-;25608:73;;25692:20;25715:38;25741:11;25715:21;25729:6;;25715:9;:13;;:21;;;;:::i;:38::-;25692:61;;25770:11;;;;;;;;;-1:-1:-1::0;;;;;25770:11:0::1;-1:-1:-1::0;;;;;25770:19:0::1;;25797;25770:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;25766:65:::0;25870:20:::1;::::0;25862:77:::1;::::0;25842:15:::1;::::0;-1:-1:-1;;;;;25870:20:0::1;::::0;25929:5:::1;::::0;25904:18;;25842:15;25862:77;25842:15;25862:77;25904:18;25870:20;25929:5;25862:77:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;25974:14:0::1;::::0;25966:65:::1;::::0;25841:98;;-1:-1:-1;;;;;;25974:14:0::1;::::0;26021:5:::1;::::0;26002:12;;25974:14:::1;25966:65:::0;25974:14;25966:65;26002:12;25974:14;26021:5;25966:65:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;26105:5:0::1;::::0;-1:-1:-1;;26126:19:0;;;-1:-1:-1;26123:372:0::1;;26161:6;::::0;26335:21:::1;::::0;26161:244:::1;::::0;;-1:-1:-1;;;26161:244:0;;26237:4:::1;26161:244;::::0;::::1;::::0;;;;;;;:6:::1;:244:::0;;;;;;;;;;-1:-1:-1;;;;;26335:21:0;;::::1;26161:244:::0;;;;26375:15:::1;26161:244:::0;;;;;;:6;;;::::1;::::0;:22:::1;::::0;26191:18;;26161:244;;;;;::::1;::::0;;;;;;;;;26191:18;26161:6;:244;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;26477:4:0::1;::::0;26425:58:::1;::::0;26437:18;;26457:25:::1;::::0;:15;;:19:::1;:25::i;:::-;26425:58;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;::::1;26123:372;-1:-1:-1::0;;13947:6:0;:14;;-1:-1:-1;;13947:14:0;;;-1:-1:-1;;;;;;;;;;;24505:1997:0:o;21828:114::-;-1:-1:-1;;;;;21915:19:0;21890:4;21915:19;;;:11;:19;;;;;;;;21914:20;;21828:114::o;21952:633::-;22033:7;22084:3;22098:64;;;;-1:-1:-1;22136:14:0;;22098:64;22175:17;22195:63;22247:10;22195:47;22233:8;;22195:33;22207:14;;22224:3;22207:20;22195:7;:11;;:33;;;;:::i;:63::-;22175:83;;22275:6;22274:7;:51;;;;;22313:12;22299:10;;22286;;:23;22285:40;22274:51;22271:118;;;22353:24;22374:2;22353:16;:7;22365:3;22353:11;:16::i;:24::-;22341:36;;22271:118;22446:4;22428:24;;;;:9;:24;;;;;;:39;;22457:9;22428:28;:39::i;:::-;22419:4;22401:24;;;;:9;:24;;;;;:66;;;;22529:4;;-1:-1:-1;;;;;22483:52:0;;;;;22515:19;;:9;;:13;:19::i;:::-;22483:52;;;;;;;;;;;;;;;22555:22;:7;22567:9;22555:11;:22::i;:::-;22548:29;21952:633;-1:-1:-1;;;;;;21952:633:0:o
Swarm Source
ipfs://8331beb9c49311f1e825d8f65475b5b58574d21d81216471e70725a0d7f11376
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.
Add Token to MetaMask (Web3)