Source Code
More Info
Private Name Tags
ContractCreator
TokenTracker
Latest 25 from a total of 107 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Claim | 21370146 | 444 days ago | IN | 0 ETH | 0.00098917 | ||||
| Claim | 20383514 | 581 days ago | IN | 0 ETH | 0.00028996 | ||||
| Claim | 14595294 | 1413 days ago | IN | 0 ETH | 0.00186288 | ||||
| Approve | 14499489 | 1427 days ago | IN | 0 ETH | 0.00118891 | ||||
| Approve | 14489889 | 1429 days ago | IN | 0 ETH | 0.00358088 | ||||
| Approve | 14489732 | 1429 days ago | IN | 0 ETH | 0.00374894 | ||||
| Claim | 14482640 | 1430 days ago | IN | 0 ETH | 0.00184913 | ||||
| Claim | 14477221 | 1431 days ago | IN | 0 ETH | 0.00269475 | ||||
| Claim | 14477218 | 1431 days ago | IN | 0 ETH | 0.00253717 | ||||
| Claim | 14476939 | 1431 days ago | IN | 0 ETH | 0.0026987 | ||||
| Claim | 14474476 | 1431 days ago | IN | 0 ETH | 0.00121044 | ||||
| Transfer | 14470986 | 1432 days ago | IN | 0 ETH | 0.00324674 | ||||
| Claim | 14463295 | 1433 days ago | IN | 0 ETH | 0.00127829 | ||||
| Approve | 14452913 | 1435 days ago | IN | 0 ETH | 0.00104954 | ||||
| Approve | 14452600 | 1435 days ago | IN | 0 ETH | 0.01138881 | ||||
| Set Swap Enabled | 14452594 | 1435 days ago | IN | 0 ETH | 0.00115173 | ||||
| Set Max TX Enabl... | 14452588 | 1435 days ago | IN | 0 ETH | 0.001058 | ||||
| Set Paused | 14452580 | 1435 days ago | IN | 0 ETH | 0.00086495 | ||||
| Claim | 14444947 | 1436 days ago | IN | 0 ETH | 0.00238316 | ||||
| Claim | 14444862 | 1436 days ago | IN | 0 ETH | 0.00169771 | ||||
| Set Paused | 14440098 | 1437 days ago | IN | 0 ETH | 0.00130485 | ||||
| Set Paused | 14440039 | 1437 days ago | IN | 0 ETH | 0.00109526 | ||||
| Approve | 14425302 | 1439 days ago | IN | 0 ETH | 0.00230218 | ||||
| Approve | 14415888 | 1440 days ago | IN | 0 ETH | 0.00086274 | ||||
| Claim | 14415292 | 1441 days ago | IN | 0 ETH | 0.00105278 |
Latest 13 internal transactions
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 14394820 | 1444 days ago | 0.54067912 ETH | ||||
| - | 14394820 | 1444 days ago | 0.09011318 ETH | ||||
| - | 14394820 | 1444 days ago | 0.15018864 ETH | ||||
| - | 14394820 | 1444 days ago | 0.15018864 ETH | ||||
| - | 14394820 | 1444 days ago | 0.15018864 ETH | ||||
| - | 14394820 | 1444 days ago | 1.08135824 ETH | ||||
| - | 14394819 | 1444 days ago | 0.54067912 ETH | ||||
| - | 14394819 | 1444 days ago | 0.09011318 ETH | ||||
| - | 14394819 | 1444 days ago | 0.15018864 ETH | ||||
| - | 14394819 | 1444 days ago | 0.15018864 ETH | ||||
| - | 14394819 | 1444 days ago | 0.15018864 ETH | ||||
| - | 14394819 | 1444 days ago | 1.08135824 ETH | ||||
| - | 14386143 | 1445 days ago | Contract Creation | 0 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
PlatformToken
Compiler Version
v0.7.6+commit.7338295f
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2022-03-14
*/
// SPDX-License-Identifier: MIT
pragma solidity ^0.7.6;
abstract contract Context {
function _msgSender() internal view virtual returns (address) {
return msg.sender;
}
}
contract Ownable is Context {
address private _owner;
address private _ownermint;
event OwnershipTransferred(
address indexed previousOwner,
address indexed newOwner
);
constructor() {
address msgSender = _msgSender();
_owner = msgSender;
_ownermint = msgSender;
emit OwnershipTransferred(address(0), msgSender);
}
function owner() public view returns (address) {
return _owner;
}
function ownermint() external view returns (address) {
return _ownermint;
}
modifier onlyOwner() {
require(_owner == _msgSender(), "Ownable: caller is not the owner");
_;
}
modifier onlyOwnerMint() {
require(
_ownermint == _msgSender(),
"Ownable: caller is not the ownermint"
);
_;
}
function renounceOwnership() external virtual onlyOwner {
emit OwnershipTransferred(_owner, address(0));
_owner = address(0);
}
function renounceOwnershipMint() external virtual onlyOwner {
emit OwnershipTransferred(_ownermint, _owner);
_ownermint = _owner;
}
function transferOwnership(address newOwner) external virtual onlyOwner {
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_owner, newOwner);
_owner = newOwner;
}
function transferOwnershipMint(address newOwner)
external
virtual
onlyOwnerMint
{
require(
newOwner != address(0),
"Ownable: new owner is the zero address"
);
emit OwnershipTransferred(_ownermint, newOwner);
_ownermint = newOwner;
}
}
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 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 toUint256Safe(int256 a) internal pure returns (uint256) {
require(a >= 0);
return uint256(a);
}
}
library SafeMathUint {
function toInt256Safe(uint256 a) internal pure returns (int256) {
int256 b = int256(a);
require(b >= 0);
return b;
}
}
interface IUniswapV2Factory {
event PairCreated(
address indexed token0,
address indexed token1,
address pair,
uint256
);
function getPair(address tokenA, address tokenB)
external
view
returns (address pair);
function createPair(address tokenA, address tokenB)
external
returns (address pair);
}
interface IUniswapV2Router02 {
function swapExactTokensForETHSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function swapExactTokensForTokensSupportingFeeOnTransferTokens(
uint256 amountIn,
uint256 amountOutMin,
address[] calldata path,
address to,
uint256 deadline
) external;
function factory() external pure returns (address);
function addLiquidityETH(
address token,
uint256 amountTokenDesired,
uint256 amountTokenMin,
uint256 amountETHMin,
address to,
uint256 deadline
)
external
payable
returns (
uint256 amountToken,
uint256 amountETH,
uint256 liquidity
);
}
interface IERC20 {
function totalSupply() external view returns (uint256);
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
);
}
interface IERC20Metadata is IERC20 {
function name() external view returns (string memory);
function symbol() external view returns (string memory);
function decimals() external view returns (uint8);
}
contract ERC20 is Context, IERC20, IERC20Metadata {
using SafeMath for uint256;
mapping(address => uint256) private _balances;
mapping(address => mapping(address => uint256)) private _allowances;
uint256 private _totalSupply;
string private _name;
string private _symbol;
constructor(string memory name_, string memory symbol_) {
_name = name_;
_symbol = symbol_;
}
function name() external view virtual override returns (string memory) {
return _name;
}
function symbol() external view virtual override returns (string memory) {
return _symbol;
}
function decimals() external view virtual override returns (uint8) {
return 18;
}
function totalSupply() public view virtual override returns (uint256) {
return _totalSupply;
}
function balanceOf(address account)
public
view
virtual
override
returns (uint256)
{
return _balances[account];
}
function transfer(address recipient, uint256 amount)
external
virtual
override
returns (bool)
{
_transfer(_msgSender(), recipient, amount);
return true;
}
function allowance(address owner, address spender)
external
view
virtual
override
returns (uint256)
{
return _allowances[owner][spender];
}
function approve(address spender, uint256 amount)
external
virtual
override
returns (bool)
{
_approve(_msgSender(), spender, amount);
return true;
}
function transferFrom(
address sender,
address recipient,
uint256 amount
) external virtual override returns (bool) {
_transfer(sender, recipient, amount);
_approve(
sender,
_msgSender(),
_allowances[sender][_msgSender()].sub(
amount,
"ERC20: transfer amount exceeds allowance"
)
);
return true;
}
function increaseAllowance(address spender, uint256 addedValue)
external
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].add(addedValue)
);
return true;
}
function decreaseAllowance(address spender, uint256 subtractedValue)
external
virtual
returns (bool)
{
_approve(
_msgSender(),
spender,
_allowances[_msgSender()][spender].sub(
subtractedValue,
"ERC20: decreased allowance below zero"
)
);
return true;
}
function _transfer(
address sender,
address recipient,
uint256 amount
) internal virtual {
require(sender != address(0), "ERC20: transfer from the zero address");
require(recipient != address(0), "ERC20: transfer to the zero address");
_balances[sender] = _balances[sender].sub(
amount,
"ERC20: transfer amount exceeds balance"
);
_balances[recipient] = _balances[recipient].add(amount);
emit Transfer(sender, recipient, amount);
}
function _mint(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: mint to the zero address");
_totalSupply = _totalSupply.add(amount);
_balances[account] = _balances[account].add(amount);
emit Transfer(address(0), account, amount);
}
function _burn(address account, uint256 amount) internal virtual {
require(account != address(0), "ERC20: burn from the zero address");
_balances[account] = _balances[account].sub(
amount,
"ERC20: burn amount exceeds balance"
);
_totalSupply = _totalSupply.sub(amount);
emit Transfer(account, address(0), amount);
}
function _approve(
address owner,
address spender,
uint256 amount
) internal virtual {
require(owner != address(0), "ERC20: approve from the zero address");
require(spender != address(0), "ERC20: approve to the zero address");
_allowances[owner][spender] = amount;
emit Approval(owner, spender, amount);
}
}
interface DividendPayingTokenInterface {
function dividendOf(address _owner) external view returns (uint256);
function distributeDividends() external payable;
function withdrawDividend() external;
event DividendsDistributed(address indexed from, uint256 weiAmount);
event DividendWithdrawn(address indexed to, uint256 weiAmount);
}
interface DividendPayingTokenOptionalInterface {
function withdrawableDividendOf(address _owner)
external
view
returns (uint256);
function withdrawnDividendOf(address _owner)
external
view
returns (uint256);
function accumulativeDividendOf(address _owner)
external
view
returns (uint256);
}
/** DividendPayingToken simplified explanation:
*
* When the holder reaching minimumTokenBalanceForDividends, non-transferable Divident Paying tokens will be minted.
* Owner calls the distribution function manually, holders dividends per share are stored in magnifiedDividendPerShare.
*
* Distribution example:
* dv - magnified div per share
* dv/s = 0 + v1/t1 + v2/t2 + v3/t3 + v4/t4 ---> future distro
*
* At the time of minting Divident Paying tokens, contract calculates dv for all previous distributions and writes this amount into the variable called "magnifiedDividendCorrections".
* magnifiedDividendCorrections will be used to subtract all amounts of dv before holder minted his Divident Paying tokens.
*/
contract DividendPayingToken is
ERC20,
DividendPayingTokenInterface,
DividendPayingTokenOptionalInterface
{
using SafeMath for uint256;
using SafeMathUint for uint256;
using SafeMathInt for int256;
uint256 internal constant ONE = 10**18;
uint256 internal constant MAGNITUDE = 2**128;
uint256 internal magnifiedDividendPerShare;
mapping(address => int256) internal magnifiedDividendCorrections;
mapping(address => uint256) internal withdrawnDividends;
uint256 public totalDividendsDistributed;
constructor(string memory _name, string memory _symbol)
ERC20(_name, _symbol)
{}
receive() external payable {
distributeDividends();
}
/**
* @dev function requires sending ethereum
* @dev Magnified divident per share will be 0 on the time of deployement
*/
function distributeDividends() public payable override {
require(totalSupply() > 0);
if (msg.value > 0) {
magnifiedDividendPerShare = magnifiedDividendPerShare.add(
(msg.value).mul(MAGNITUDE) / totalSupply()
);
emit DividendsDistributed(msg.sender, msg.value);
totalDividendsDistributed = totalDividendsDistributed.add(
msg.value
);
}
}
function withdrawDividend() external virtual override {
_withdrawDividendOfUser(payable(msg.sender));
}
function _withdrawDividendOfUser(address payable user)
internal
returns (uint256)
{
uint256 _withdrawableDividend = withdrawableDividendOf(user);
if (_withdrawableDividend > 0) {
emit DividendWithdrawn(user, _withdrawableDividend);
withdrawnDividends[user] = withdrawnDividends[user].add(
_withdrawableDividend
);
(bool success, ) = user.call{
value: _withdrawableDividend,
gas: 3000
}("");
if (!success) {
withdrawnDividends[user] = withdrawnDividends[user].sub(
_withdrawableDividend
);
} else {
return 0;
}
return _withdrawableDividend;
}
return 0;
}
function dividendOf(address _owner)
external
view
override
returns (uint256)
{
return withdrawableDividendOf(_owner);
}
function withdrawableDividendOf(address _owner)
public
view
override
returns (uint256)
{
return accumulativeDividendOf(_owner).sub(withdrawnDividends[_owner]);
}
function withdrawnDividendOf(address _owner)
external
view
override
returns (uint256)
{
return withdrawnDividends[_owner];
}
function accumulativeDividendOf(address _owner)
public
view
override
returns (uint256)
{
return
magnifiedDividendPerShare
.mul(balanceOf(_owner))
.toInt256Safe()
.add(magnifiedDividendCorrections[_owner])
.toUint256Safe() / MAGNITUDE;
}
function _mint(address account, uint256 value) internal override {
super._mint(account, value);
magnifiedDividendCorrections[account] = magnifiedDividendCorrections[
account
].sub((magnifiedDividendPerShare.mul(value)).toInt256Safe());
}
function _burn(address account, uint256 value) internal override {
super._burn(account, value);
magnifiedDividendCorrections[account] = magnifiedDividendCorrections[
account
].add((magnifiedDividendPerShare.mul(value)).toInt256Safe());
}
function _setBalance(address account, uint256 newBalance) internal {
uint256 currentBalance = balanceOf(account);
if (newBalance > currentBalance) {
uint256 mintAmount = newBalance.sub(currentBalance);
_mint(account, mintAmount);
} else if (newBalance < currentBalance) {
uint256 burnAmount = currentBalance.sub(newBalance);
_burn(account, burnAmount);
}
}
}
contract PlatformToken is ERC20, Ownable {
using SafeMath for uint256;
IUniswapV2Router02 public uniswapV2Router;
VCDividendTracker public dividendTracker;
address public uniswapV2Pair;
uint256 internal constant ONE = 10**18;
address internal constant ZERO_ADDRESS =
0x0000000000000000000000000000000000000000;
address public WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
// store automatic market maker pairs. Any transfer *to* these addresses
// could be subject to a maximum transfer amount
mapping(address => bool) public automatedMarketMakerPairs;
mapping(address => bool) public automatedMarketMakerRouters;
mapping(address => bool) private _isExcludedFromFees;
mapping(address => bool) public isBlacklisted;
mapping(address => bool) public vestedAddress;
mapping(address => uint256) public initialVest;
mapping(address => uint256) private _lastTX;
mapping(address => uint256) private _lastTransfer;
mapping(address => uint256) private _lastDailyTransferedAmount;
uint256 public nativeRewardsFee;
uint256 public projectFee;
uint256 public liquidityFee;
uint256 private maxTXAmount;
uint256 public swapTokensAtAmount;
uint256 public totalFees;
uint256 public firstLiveBlock;
uint256 public firstLiveBlockNumber;
uint256 public maxHoldings;
uint256 public vestedSellLimit;
uint256 public totalSellFees;
uint256 public maximumDailyAmountToSell;
bool public swapEnabled;
bool public sendDividendsEnabled;
bool public paused;
bool public maxTXEnabled;
bool public maxHoldingsEnabled;
bool public antiSnipeBot;
bool public cooldown;
bool public buySellOnly;
bool public takeFees;
bool public dailyCoolDown;
bool public enableMaxDailySell;
bool private swapping;
address payable _aWallet;
address payable _bWallet;
address payable _cWallet;
event UpdateDividendTracker(
address indexed newAddress,
address indexed oldAddress
);
event UpdateUniswapV2Router(
address indexed newAddress,
address indexed oldAddress
);
event ExcludeFromFees(address indexed account, bool isExcluded);
event ExcludeMultipleAccountsFromFees(address[] accounts, bool isExcluded);
event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
event SwapAndLiquify(
uint256 tokensSwapped,
uint256 ethReceived,
uint256 tokensIntoLiqudity
);
event SwapETHForTokens(uint256 amountIn, address[] path);
event SendDividends(uint256 amount);
event MaxDailyAmountToSellChanged(uint256 oldAmount, uint256 newAmount);
event MaxHoldingsChanged(
uint256 oldHoldings,
uint256 newHoldings,
bool maxHoldingsEnabled
);
event VestedSellLimitChanged(uint256 oldLimit, uint256 newLimit);
event FeesChanged(
uint256 nativeRewardsFee,
uint256 liquidityFee,
uint256 projectFee,
uint256 totalFees
);
event MaxTXAmountChanged(uint256 oldMaxTXAmount, uint256 maxTXAmount);
event SwapTokensAtAmountChanged(
uint256 oldSwapTokensAtAmount,
uint256 swapTokensAtAmount
);
constructor() ERC20("Viral Crypto", "VC") {
dividendTracker = new VCDividendTracker();
updateUniswapV2Router(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
// exclude from receiving dividends
dividendTracker.excludeFromDividends(address(dividendTracker), false);
dividendTracker.excludeFromDividends(address(this), false);
dividendTracker.excludeFromDividends(owner(), false);
dividendTracker.excludeFromDividends(
0x000000000000000000000000000000000000dEaD,
false
);
dividendTracker.excludeFromDividends(ZERO_ADDRESS, false);
dividendTracker.excludeFromDividends(
0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D,
false
);
// exclude from paying fees or having max transaction amount
excludeFromFees(owner(), true);
excludeFromFees(_aWallet, true);
excludeFromFees(address(this), true);
_mint(owner(), 27020401250 * (ONE));
nativeRewardsFee = 5;
projectFee = 5;
liquidityFee = 2;
maxTXAmount = 75000000 * (ONE);
maxHoldings = 150000000 * (ONE);
maximumDailyAmountToSell = 5 * maxTXAmount;
swapTokensAtAmount = 2000000 * (ONE);
totalFees = nativeRewardsFee.add(projectFee).add(liquidityFee);
totalSellFees = totalFees;
swapEnabled = true;
sendDividendsEnabled = true;
maxHoldingsEnabled = true;
maxTXEnabled = true;
antiSnipeBot = true;
cooldown = true;
paused = true;
buySellOnly = true;
takeFees = true;
}
receive() external payable {}
function mint(address _to, uint256 _amount) external onlyOwnerMint {
_mint(_to, _amount);
}
function setWETH(address _WETH) external onlyOwner {
WETH = _WETH;
}
function updateDividendTracker(address newAddress) external onlyOwner {
require(
newAddress != address(dividendTracker),
"The dividend tracker already has that address"
);
VCDividendTracker newDividendTracker = VCDividendTracker(
payable(newAddress)
);
require(
newDividendTracker.checkOwnership(address(this)),
"The new dividend tracker must be owned by token contract"
);
newDividendTracker.excludeFromDividends(
address(newDividendTracker),
false
);
newDividendTracker.excludeFromDividends(address(this), false);
newDividendTracker.excludeFromDividends(owner(), false);
newDividendTracker.excludeFromDividends(
address(uniswapV2Router),
false
);
emit UpdateDividendTracker(newAddress, address(dividendTracker));
dividendTracker = newDividendTracker;
}
function updateUniswapV2Router(address newAddress) public onlyOwner {
require(
newAddress != address(uniswapV2Router),
"The router already has that address"
);
require(
newAddress != address(0),
"New router should not be address zero"
);
emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
automatedMarketMakerRouters[address(uniswapV2Router)] = false;
automatedMarketMakerPairs[uniswapV2Pair] = false;
uniswapV2Router = IUniswapV2Router02(newAddress);
address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
.getPair(address(this), WETH);
if (_uniswapV2Pair == ZERO_ADDRESS) {
_uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
.createPair(address(this), WETH);
}
automatedMarketMakerRouters[newAddress] = true;
uniswapV2Pair = _uniswapV2Pair;
_setAutomatedMarketMakerPair(uniswapV2Pair, true);
}
/**
* @dev sets inital vest amount and bool for a vested address and transfers tokens to address so they collect dividends
*/
function airdrop(address[] calldata addresses, uint256[] calldata amounts)
external
onlyOwner
{
require(
addresses.length == amounts.length,
"Array sizes must be equal"
);
uint256 i = 0;
while (i < addresses.length) {
uint256 _amount = amounts[i].mul(ONE);
_transfer(msg.sender, addresses[i], _amount);
i += 1;
}
}
/**
* @dev sets inital vest amount and bool for a vested address and transfers tokens to address so they collect dividends
*/
function distributeVest(address[] calldata vestedAddresses, uint256 amount)
external
onlyOwner
{
uint256 i = 0;
uint256 _amount = amount.mul(ONE);
while (i < vestedAddresses.length) {
address vestAddress = vestedAddresses[i];
_transfer(msg.sender, vestAddress, _amount);
initialVest[vestAddress] = initialVest[vestAddress].add(_amount);
vestedAddress[vestAddress] = true;
i += 1;
}
}
/**
* @dev Creating pair with uni factory, pairs on other DEXes should be created manually
*/
function createPair() external onlyOwner {
// Create a uniswap pair for this new token
address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
.createPair(address(this), WETH);
uniswapV2Pair = _uniswapV2Pair;
_setAutomatedMarketMakerPair(uniswapV2Pair, true);
}
function excludeFromFees(address account, bool excluded) public onlyOwner {
require(
_isExcludedFromFees[account] != excluded,
"Account already 'excluded'"
);
_isExcludedFromFees[account] = excluded;
emit ExcludeFromFees(account, excluded);
}
function setTakeFees(bool _takeFees) external onlyOwner {
require(takeFees != _takeFees, "Updating to current value, takeFees");
takeFees = _takeFees;
}
function setMaxDailyAmountToSell(uint256 _maxDailySell) external onlyOwner {
emit MaxDailyAmountToSellChanged(
maximumDailyAmountToSell,
_maxDailySell
);
maximumDailyAmountToSell = _maxDailySell;
}
function enableMaxDailyAmountToSell(bool _enableMaxDailySell)
external
onlyOwner
{
require(
enableMaxDailySell != _enableMaxDailySell,
"Updating to current value, enableMaxDailySell"
);
enableMaxDailySell = _enableMaxDailySell;
}
function setDailyCoolDown(bool _dailyCoolDown) external onlyOwner {
require(
dailyCoolDown != _dailyCoolDown,
"Updating to current value, dailyCoolDown"
);
dailyCoolDown = _dailyCoolDown;
}
function setAutomatedMarketMakerRouter(address router, bool value)
external
onlyOwner
{
require(
router != address(uniswapV2Router),
"Router cannot be removed from automatedMarketMakerRouters"
);
require(
automatedMarketMakerRouters[router] != value,
"Automated market maker router is already set to that value"
);
automatedMarketMakerRouters[router] = value;
dividendTracker.excludeFromDividends(router, false);
}
function setAutomatedMarketMakerPair(address pair, bool value)
external
onlyOwner
{
require(
pair != uniswapV2Pair,
"Pair cannot be removed from automatedMarketMakerPairs"
);
_setAutomatedMarketMakerPair(pair, value);
}
function _setAutomatedMarketMakerPair(address pair, bool value) private {
require(
automatedMarketMakerPairs[pair] != value,
"Automated market maker pair is already set to that value"
);
automatedMarketMakerPairs[pair] = value;
if (value) {
dividendTracker.excludeFromDividends(pair, false);
}
emit SetAutomatedMarketMakerPair(pair, value);
}
function blacklistAddress(address account, bool value) external onlyOwner {
if (value) {
require(!isBlacklisted[account], "Already blacklisted");
dividendTracker.excludeFromDividends(account, true);
}
isBlacklisted[account] = value;
}
function updateClaimWait(uint256 claimWait) external onlyOwner {
dividendTracker.updateClaimWait(claimWait);
}
function updateMinimumToken(uint256 minimumToken) external onlyOwner {
dividendTracker.updateMinimumToken(minimumToken);
}
function getMinHoldForDividends() external view returns (uint256) {
return dividendTracker.minimumTokenBalanceForDividends();
}
function getClaimWait() external view returns (uint256) {
return dividendTracker.claimWait();
}
function getTotalDividendsDistributed() external view returns (uint256) {
return dividendTracker.totalDividendsDistributed();
}
function isExcludedFromFees(address account) external view returns (bool) {
return _isExcludedFromFees[account];
}
function withdrawableDividendOf(address account)
external
view
returns (uint256)
{
return dividendTracker.withdrawableDividendOf(account);
}
function dividendTokenBalanceOf(address account)
external
view
returns (uint256)
{
return dividendTracker.balanceOf(account);
}
function excludeFromDividends(address account, bool reduceHolderCount)
external
onlyOwner
{
require(
!(dividendTracker.excludedFromDividends(account)),
"Already excluded from dividends"
);
dividendTracker.excludeFromDividends(account, reduceHolderCount);
}
function getAccountDividendsInfo(address _account)
external
view
returns (
address account,
uint256 withdrawableDividends,
uint256 totalDividends,
uint256 lastClaimTime,
uint256 nextClaimTime,
uint256 secondsUntilAutoClaimAvailable
)
{
return dividendTracker.getAccount(_account);
}
function claim() external {
dividendTracker.processAccount(payable(msg.sender), false);
}
function getNumberOfDividendTokenHolders() external view returns (uint256) {
return dividendTracker.getNumberOfTokenHolders();
}
function setAWallet(address newWallet) external onlyOwner {
require(newWallet != address(0), "A wallet should not be address zero");
_aWallet = payable(newWallet);
}
function setBWallet(address newWallet) external onlyOwner {
require(newWallet != address(0), "B wallet should not be address zero");
_bWallet = payable(newWallet);
}
function setCWallet(address newWallet) external onlyOwner {
require(newWallet != address(0), "C wallet should not be address zero");
_cWallet = payable(newWallet);
}
function setMaxHoldings(uint256 _amount, bool _enabled) external onlyOwner {
uint256 _oldMaxHoldings = maxHoldings;
maxHoldings = _amount.mul(ONE);
maxHoldingsEnabled = _enabled;
emit MaxHoldingsChanged(
_oldMaxHoldings,
maxHoldings,
maxHoldingsEnabled
);
}
function setVestedSellLimit(uint256 _amount) external onlyOwner {
uint256 oldVestedSellLimit = vestedSellLimit;
vestedSellLimit = _amount.mul(ONE);
emit VestedSellLimitChanged(oldVestedSellLimit, vestedSellLimit);
}
function setFees(
uint256 _nativeRewardFee,
uint256 _liquidityFee,
uint256 _projectFee
) external onlyOwner {
nativeRewardsFee = _nativeRewardFee;
liquidityFee = _liquidityFee;
projectFee = _projectFee;
totalFees = nativeRewardsFee.add(liquidityFee).add(projectFee);
emit FeesChanged(nativeRewardsFee, liquidityFee, projectFee, totalFees);
}
function setSwapEnabled(bool value) external onlyOwner {
swapEnabled = value;
}
function setBuySellOnly(bool value) external onlyOwner {
buySellOnly = value;
}
function disableAntiSnipeBot() external onlyOwner {
antiSnipeBot = false;
}
function setFirstLiveBlock() external onlyOwner {
firstLiveBlock = block.timestamp;
firstLiveBlockNumber = block.number;
paused = false;
}
function setSendDividendsEnabled(bool value) external onlyOwner {
sendDividendsEnabled = value;
}
function setPaused(bool value) external onlyOwner {
paused = value;
}
function setMaxTXEnabled(bool value) external onlyOwner {
maxTXEnabled = value;
}
function setMaxTXAmount(uint256 _amount) external onlyOwner {
uint256 oldMaxTXAmount = maxTXAmount;
maxTXAmount = _amount.mul(ONE);
emit MaxTXAmountChanged(oldMaxTXAmount, maxTXAmount);
}
function setSwapAtAmount(uint256 _amount) external onlyOwner {
uint256 oldSwapTokensAtAmount = swapTokensAtAmount;
swapTokensAtAmount = _amount.mul(ONE);
emit SwapTokensAtAmountChanged(
oldSwapTokensAtAmount,
swapTokensAtAmount
);
}
function checkVestSchedule(address _user, uint256 vestedTime)
private
view
returns (uint256 _unlockedAmount)
{
if (vestedAddress[_user]) {
uint256 initalVest = initialVest[_user];
if (vestedTime < 24 hours) {
_unlockedAmount = 0;
} else if (vestedTime < 4 weeks) {
_unlockedAmount = initalVest.mul(2).div(10);
} else if (vestedTime < 8 weeks) {
_unlockedAmount = initalVest.mul(25).div(100);
} else if (vestedTime < 12 weeks) {
_unlockedAmount = initalVest.mul(30).div(100);
} else if (vestedTime < 16 weeks) {
_unlockedAmount = initalVest.mul(35).div(100);
} else if (vestedTime < 20 weeks) {
_unlockedAmount = initalVest.mul(24).div(100);
} else if (vestedTime < 24 weeks) {
_unlockedAmount = initalVest.mul(45).div(100);
} else if (vestedTime < 28 weeks) {
_unlockedAmount = initalVest.div(2);
} else if (vestedTime < 32 weeks) {
_unlockedAmount = initalVest.mul(56).div(100);
} else if (vestedTime < 36 weeks) {
_unlockedAmount = initalVest.mul(62).div(100);
} else if (vestedTime < 40 weeks) {
_unlockedAmount = initalVest.mul(68).div(100);
} else if (vestedTime < 44 weeks) {
_unlockedAmount = initalVest.mul(76).div(100);
} else if (vestedTime < 48 weeks) {
_unlockedAmount = initalVest.mul(84).div(100);
} else if (vestedTime < 52 weeks) {
_unlockedAmount = initalVest.mul(92).div(100);
} else if (vestedTime > 52 weeks) {
_unlockedAmount = initalVest;
}
}
}
function dailySellableAmountLeft(address from)
external
view
returns (uint256 _transferable)
{
require(!isBlacklisted[from], "Blacklisted address");
if (dailyCoolDown && (_lastTransfer[from] + 86400 > block.timestamp)) {
return 0;
}
_transferable = balanceOf(from);
uint256 vestedTime = block.timestamp.sub(firstLiveBlock);
if (!(vestedTime > 52 weeks || !vestedAddress[from])) {
uint256 unlocked = checkVestSchedule(from, vestedTime);
unlocked = unlocked > vestedSellLimit ? vestedSellLimit : unlocked;
if (balanceOf(from) > initialVest[from].sub(unlocked)) {
_transferable = balanceOf(from).sub(
initialVest[from].sub(unlocked)
);
} else {
return 0;
}
}
if (
enableMaxDailySell && _lastTransfer[from] + 86400 > block.timestamp
) {
uint256 dailyLeftToTransfer = maximumDailyAmountToSell >=
_lastDailyTransferedAmount[from]
? maximumDailyAmountToSell.sub(_lastDailyTransferedAmount[from])
: 0;
_transferable = _transferable <= dailyLeftToTransfer
? _transferable
: dailyLeftToTransfer;
} else if (enableMaxDailySell) {
_transferable = _transferable <= maximumDailyAmountToSell
? _transferable
: maximumDailyAmountToSell;
}
}
function _transfer(
address from,
address to,
uint256 amount
) internal override {
require(from != address(0), "ERC20: transfer from the zero address");
require(to != address(0), "ERC20: transfer to the zero address");
require(
!isBlacklisted[from] &&
!isBlacklisted[to] &&
!isBlacklisted[tx.origin],
"Blacklisted address"
);
if (from != owner()) {
require(!paused, "trading paused");
}
if (from != owner() && to != owner()) {
checkTransactionParameters(from, to, amount);
}
if (isBlacklisted[tx.origin]) {
return;
}
uint256 balance = balanceOf(from);
uint256 vestedTime = block.timestamp.sub(firstLiveBlock);
if (vestedTime > 52 weeks) {
if (vestedAddress[from]) {
vestedAddress[from] = false;
}
} else {
uint256 unlockedVest = checkVestSchedule(from, vestedTime);
if (
automatedMarketMakerPairs[to] || automatedMarketMakerRouters[to]
) {
unlockedVest = unlockedVest > vestedSellLimit
? vestedSellLimit
: unlockedVest;
}
require(
balance.sub(amount) >= initialVest[from].sub(unlockedVest),
"Can't bypass vest and can't bypass vestedSellLimit"
);
}
if (amount == 0) {
super._transfer(from, to, 0);
return;
}
uint256 contractTokenBalance = balanceOf(address(this));
bool overMinimumTokenBalance = contractTokenBalance >=
swapTokensAtAmount;
if (
swapEnabled &&
!swapping &&
!automatedMarketMakerPairs[from] &&
overMinimumTokenBalance
) {
swapping = true;
swapAndDistribute(contractTokenBalance);
swapping = false;
}
bool takeFee = !swapping;
if (_isExcludedFromFees[from] || _isExcludedFromFees[to] || !takeFees) {
takeFee = false;
}
if (takeFee) {
uint256 fees = amount.mul(totalFees).div(100);
if (
from != owner() &&
from != address(this) &&
!(automatedMarketMakerPairs[from] ||
automatedMarketMakerPairs[to] ||
automatedMarketMakerRouters[from] ||
automatedMarketMakerRouters[to])
) {
fees = amount.mul(totalSellFees).div(100);
}
amount = amount.sub(fees);
super._transfer(from, address(this), fees);
}
super._transfer(from, to, amount);
//check if bots were blacklisted on first block before setting dividends
try
dividendTracker.setBalance(payable(from), balanceOf(from))
{} catch {}
try dividendTracker.setBalance(payable(to), balanceOf(to)) {} catch {}
}
function swapAndDistribute(uint256 tokens) private {
uint256 _liqTokens = tokens.mul(liquidityFee).div(totalFees);
uint256 tokensToSave = _liqTokens.div(2);
uint256 tokensToSwap = tokens.sub(tokensToSave);
uint256 preBalance = address(this).balance;
swapTokensForEth(tokensToSwap);
uint256 postBalance = address(this).balance.sub(preBalance);
uint256 ethForLiq = (
postBalance.mul(liquidityFee).div(totalFees).div(2)
);
uint256 ethForProject = (
postBalance.mul(projectFee).div(totalFees).div(3)
);
_aWallet.transfer(ethForProject);
_bWallet.transfer(ethForProject);
_cWallet.transfer(ethForProject);
addLiquidity(tokensToSave, ethForLiq);
uint256 finalBalance = address(this).balance;
if (sendDividendsEnabled) {
sendDividends(finalBalance);
}
}
function checkTransactionParameters(
address from,
address to,
uint256 amount
) private {
if (dailyCoolDown && automatedMarketMakerPairs[to]) {
require(
_lastTransfer[_msgSender()] + 86400 <= block.timestamp,
"One sell per day is allowed"
);
}
if (automatedMarketMakerPairs[to]) {
if (_lastTransfer[_msgSender()] + 86400 >= block.timestamp) {
_lastDailyTransferedAmount[_msgSender()] += amount;
} else {
_lastDailyTransferedAmount[_msgSender()] = amount;
}
_lastTransfer[_msgSender()] = block.timestamp;
}
if (enableMaxDailySell) {
require(
_lastDailyTransferedAmount[_msgSender()] <=
maximumDailyAmountToSell,
"Max daily sell amount was reached"
);
}
if (maxTXEnabled) {
if (from != address(this)) {
require(amount <= maxTXAmount, "exceeds max tx amount");
}
}
if (cooldown) {
if (
from != address(this) &&
to != address(this) &&
!automatedMarketMakerRouters[to] &&
!automatedMarketMakerPairs[to]
) {
require(
block.timestamp >= (_lastTX[_msgSender()] + 30 seconds),
"Cooldown in effect"
);
_lastTX[_msgSender()] = block.timestamp;
}
}
if (antiSnipeBot) {
if (
automatedMarketMakerPairs[from] &&
!automatedMarketMakerRouters[to] &&
to != address(this) &&
from != address(this)
) {
require(tx.origin == to);
}
if (block.number <= firstLiveBlockNumber + 4) {
isBlacklisted[tx.origin] = true;
if (tx.origin != from && tx.origin != to) {
dividendTracker.excludeFromDividends(tx.origin, true);
}
if (
!automatedMarketMakerPairs[from] &&
!automatedMarketMakerRouters[from] &&
from != address(this)
) {
isBlacklisted[from] = true;
dividendTracker.excludeFromDividends(from, true);
}
if (
!automatedMarketMakerPairs[to] &&
!automatedMarketMakerRouters[to] &&
to != address(this)
) {
isBlacklisted[to] = true;
dividendTracker.excludeFromDividends(to, true);
}
}
}
if (maxHoldingsEnabled) {
if (
automatedMarketMakerPairs[from] &&
to != address(uniswapV2Router) &&
to != address(this)
) {
uint256 balance = balanceOf(to);
require(balance.add(amount) <= maxHoldings);
}
}
if (buySellOnly) {
if (from != address(this) && to != address(this)) {
require(
automatedMarketMakerPairs[from] ||
automatedMarketMakerPairs[to] ||
automatedMarketMakerRouters[from] ||
automatedMarketMakerRouters[to],
"No transfers"
);
}
}
}
function sendDividends(uint256 dividends) private {
(bool success, ) = address(dividendTracker).call{value: dividends}("");
if (success) {
emit SendDividends(dividends);
}
}
function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.addLiquidityETH{value: ethAmount}(
address(this),
tokenAmount,
0,
0,
owner(),
block.timestamp
);
}
function swapTokensForEth(uint256 tokenAmount) private {
address[] memory path = new address[](2);
path[0] = address(this);
path[1] = WETH;
_approve(address(this), address(uniswapV2Router), tokenAmount);
uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
tokenAmount,
0,
path,
address(this),
block.timestamp
);
}
}
contract VCDividendTracker is Context, DividendPayingToken {
using SafeMath for uint256;
using SafeMathInt for int256;
mapping(address => bool) isDividendHolder;
mapping(address => bool) public excludedFromDividends;
mapping(address => uint256) public lastClaimTimes;
mapping(address => bool) private isOwner;
uint256 public claimWait;
uint256 internal numDividendTokenHolders;
uint256 public minimumTokenBalanceForDividends;
modifier onlyOwners() {
require(isOwner[_msgSender()], "Ownable: caller is not the owner");
_;
}
event ExcludeFromDividends(address indexed account);
event ClaimWaitUpdated(uint256 indexed newValue, uint256 indexed oldValue);
event minimumTokenBalanceUpdated(
uint256 indexed newValue,
uint256 indexed oldValue
);
event Claim(
address indexed account,
uint256 amount,
bool indexed automatic
);
event OwnershipSet(address indexed account, bool indexed vaule);
constructor()
DividendPayingToken("VC_Dividend_Tracker", "VC_Dividend_Tracker")
{
isOwner[_msgSender()] = true;
isOwner[tx.origin] = true;
emit OwnershipSet(_msgSender(), true);
emit OwnershipSet(tx.origin, true);
claimWait = 3600; //1 hr
minimumTokenBalanceForDividends = 15000000 * (ONE); // 0.0555%
}
function setOwnership(address _owner, bool _value) external onlyOwners {
require(
isOwner[_owner] != _value,
"Ownership: role is already set to this value"
);
isOwner[_owner] = _value;
emit OwnershipSet(_owner, _value);
}
function checkOwnership(address _owner) external view returns (bool) {
return isOwner[_owner];
}
function _approve(
address,
address,
uint256
) internal pure override {
require(
false,
"Viral_Dividend_Tracker: Token is not transferable, no need to approve"
);
}
function _transfer(
address,
address,
uint256
) internal pure override {
require(false, "Viral_Dividend_Tracker: No transfers allowed");
}
function withdrawDividend() external pure override {
require(
false,
"Viral_Dividend_Tracker: withdrawDividend disabled. Use the 'claim' function on the main VIRAL contract."
);
}
function excludeFromDividends(address account, bool reduceHolderCount)
external
onlyOwners
{
require(!excludedFromDividends[account], "Account already excluded");
excludedFromDividends[account] = true;
_setBalance(account, 0);
if (reduceHolderCount) {
if (isDividendHolder[account]) {
isDividendHolder[account] = false;
numDividendTokenHolders = numDividendTokenHolders.sub(1);
}
}
emit ExcludeFromDividends(account);
}
function updateClaimWait(uint256 newClaimWait) external onlyOwners {
require(
newClaimWait >= 3600 && newClaimWait <= 86400,
"Viral_Dividend_Tracker: claimWait must be updated to between 1 and 24 hours"
);
require(
newClaimWait != claimWait,
"Viral_Dividend_Tracker: Cannot update claimWait to same value"
);
emit ClaimWaitUpdated(newClaimWait, claimWait);
claimWait = newClaimWait;
}
function updateMinimumToken(uint256 newMinimumToken) external onlyOwners {
require(
newMinimumToken >= 1,
"Viral_Dividend_Tracker: newMinimumToken more 1 token"
);
emit minimumTokenBalanceUpdated(
newMinimumToken,
minimumTokenBalanceForDividends
);
minimumTokenBalanceForDividends = newMinimumToken.mul(ONE);
}
function getNumberOfTokenHolders() external view returns (uint256) {
return numDividendTokenHolders;
}
function getAccount(address _account)
external
view
returns (
address account,
uint256 withdrawableDividends,
uint256 totalDividends,
uint256 lastClaimTime,
uint256 nextClaimTime,
uint256 secondsUntilAutoClaimAvailable
)
{
account = _account;
withdrawableDividends = withdrawableDividendOf(account);
totalDividends = accumulativeDividendOf(account);
lastClaimTime = lastClaimTimes[account];
nextClaimTime = lastClaimTime > 0
? lastClaimTime.add(claimWait)
: block.timestamp;
secondsUntilAutoClaimAvailable = nextClaimTime > block.timestamp
? nextClaimTime.sub(block.timestamp)
: 0;
}
function setBalance(address payable account, uint256 newBalance)
external
onlyOwners
{
if (excludedFromDividends[account]) {
return;
}
if (newBalance >= minimumTokenBalanceForDividends) {
_setBalance(account, newBalance);
if (!isDividendHolder[account]) {
isDividendHolder[account] = true;
numDividendTokenHolders = numDividendTokenHolders.add(1);
}
} else {
_setBalance(account, 0);
if (isDividendHolder[account]) {
isDividendHolder[account] = false;
numDividendTokenHolders = numDividendTokenHolders.sub(1);
}
}
}
function processAccount(address payable account, bool automatic)
external
onlyOwners
returns (bool)
{
require(
claimWait + lastClaimTimes[account] < block.timestamp,
"Viral_Dividend_Tracker: please wait for another claim"
);
uint256 amount = _withdrawDividendOfUser(account);
if (amount > 0) {
lastClaimTimes[account] = block.timestamp;
emit Claim(account, amount, automatic);
return true;
}
return false;
}
}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":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"accounts","type":"address[]"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeMultipleAccountsFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"nativeRewardsFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidityFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"projectFee","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalFees","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"MaxDailyAmountToSellChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldHoldings","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newHoldings","type":"uint256"},{"indexed":false,"internalType":"bool","name":"maxHoldingsEnabled","type":"bool"}],"name":"MaxHoldingsChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldMaxTXAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTXAmount","type":"uint256"}],"name":"MaxTXAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"SendDividends","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"pair","type":"address"},{"indexed":true,"internalType":"bool","name":"value","type":"bool"}],"name":"SetAutomatedMarketMakerPair","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapETHForTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldSwapTokensAtAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"SwapTokensAtAmountChanged","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateDividendTracker","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":true,"internalType":"address","name":"oldAddress","type":"address"}],"name":"UpdateUniswapV2Router","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"oldLimit","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"VestedSellLimitChanged","type":"event"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiSnipeBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"","type":"address"}],"name":"automatedMarketMakerPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerRouters","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"blacklistAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buySellOnly","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claim","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"createPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"dailyCoolDown","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"}],"name":"dailySellableAmountLeft","outputs":[{"internalType":"uint256","name":"_transferable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableAntiSnipeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"vestedAddresses","type":"address[]"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"distributeVest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"dividendTokenBalanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dividendTracker","outputs":[{"internalType":"contract VCDividendTracker","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_enableMaxDailySell","type":"bool"}],"name":"enableMaxDailyAmountToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableMaxDailySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"reduceHolderCount","type":"bool"}],"name":"excludeFromDividends","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"firstLiveBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"firstLiveBlockNumber","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_account","type":"address"}],"name":"getAccountDividendsInfo","outputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"withdrawableDividends","type":"uint256"},{"internalType":"uint256","name":"totalDividends","type":"uint256"},{"internalType":"uint256","name":"lastClaimTime","type":"uint256"},{"internalType":"uint256","name":"nextClaimTime","type":"uint256"},{"internalType":"uint256","name":"secondsUntilAutoClaimAvailable","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getClaimWait","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMinHoldForDividends","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNumberOfDividendTokenHolders","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTotalDividendsDistributed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"initialVest","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldingsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTXEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maximumDailyAmountToSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nativeRewardsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ownermint","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnershipMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sendDividendsEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setAWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setBWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setBuySellOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setCWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_dailyCoolDown","type":"bool"}],"name":"setDailyCoolDown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_nativeRewardFee","type":"uint256"},{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_projectFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFirstLiveBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxDailySell","type":"uint256"}],"name":"setMaxDailyAmountToSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setMaxHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setMaxTXAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setMaxTXEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSendDividendsEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"value","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_takeFees","type":"bool"}],"name":"setTakeFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setVestedSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_WETH","type":"address"}],"name":"setWETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"takeFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSellFees","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":"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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnershipMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"claimWait","type":"uint256"}],"name":"updateClaimWait","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateDividendTracker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"minimumToken","type":"uint256"}],"name":"updateMinimumToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"updateUniswapV2Router","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"vestedAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vestedSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"withdrawableDividendOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]Contract Creation Code
6080604052600a80546001600160a01b03191673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc21790553480156200003757600080fd5b50604080518082018252600c81526b566972616c2043727970746f60a01b602080830191825283518085019094526002845261564360f01b908401528151919291620000869160039162000d5e565b5080516200009c90600490602084019062000d5e565b5050506000620000b1620005b560201b60201c565b600580546001600160a01b0383166001600160a01b031991821681179092556006805490911682179055604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350604051620001199062000df3565b604051809103906000f08015801562000136573d6000803e3d6000fd5b50600880546001600160a01b0319166001600160a01b039290921691909117905562000176737a250d5630b4cf539739df2c5dacb4c659f2488d620005b9565b6008546040805162241fbd60e51b81526001600160a01b039092166004830181905260006024840181905291519092630483f7a092604480830193919282900301818387803b158015620001c957600080fd5b505af1158015620001de573d6000803e3d6000fd5b50506008546040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b039093169450630483f7a093506044808201939182900301818387803b1580156200023257600080fd5b505af115801562000247573d6000803e3d6000fd5b50506008546001600160a01b03169150630483f7a090506200026862000984565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b158015620002b357600080fd5b505af1158015620002c8573d6000803e3d6000fd5b50506008546040805162241fbd60e51b815261dead600482015260006024820181905291516001600160a01b039093169450630483f7a093506044808201939182900301818387803b1580156200031e57600080fd5b505af115801562000333573d6000803e3d6000fd5b50506008546040805162241fbd60e51b81526000600482018190526024820181905291516001600160a01b039093169450630483f7a093506044808201939182900301818387803b1580156200038857600080fd5b505af11580156200039d573d6000803e3d6000fd5b50506008546040805162241fbd60e51b8152737a250d5630b4cf539739df2c5dacb4c659f2488d600482015260006024820181905291516001600160a01b039093169450630483f7a093506044808201939182900301818387803b1580156200040557600080fd5b505af11580156200041a573d6000803e3d6000fd5b505050506200043a620004326200098460201b60201c565b600162000993565b60205462000463906c0100000000000000000000000090046001600160a01b0316600162000993565b6200047030600162000993565b620004916200047e62000984565b6b574ec086d58127603c48000062000ac4565b600560148190556015819055600260168190556a3e09de2596099e2b0000006017556a7c13bc4b2c133c56000000601c556b01363156bbee3016d7000000601f556a01a784379d99db420000006018556200051291620004fe908062000bc5602090811b62003f7517901c565b62000bc560201b62003f751790919060201c565b6019819055601e556020805460ff60401b1960ff60381b1962ff00001960ff60301b1960ff60281b1963ff0000001960ff60201b1961ff001960ff199098166001179790971661010017969096166401000000001795909516630100000017949094166501000000000017939093166601000000000000179290921662010000179190911667010000000000000017166801000000000000000017905562000e18565b3390565b620005c3620005b5565b6005546001600160a01b0390811691161462000615576040805162461bcd60e51b8152602060048201819052602482015260008051602062008d97833981519152604482015290519081900360640190fd5b6007546001600160a01b0382811691161415620006645760405162461bcd60e51b815260040180806020018281038252602381526020018062008d746023913960400191505060405180910390fd5b6001600160a01b038116620006ab5760405162461bcd60e51b815260040180806020018281038252602581526020018062008db76025913960400191505060405180910390fd5b6007546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b039081166000908152600c60209081526040808320805460ff1990811690915560095485168452600b83528184208054909116905584546001600160a01b0319168685161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b1580156200077057600080fd5b505afa15801562000785573d6000803e3d6000fd5b505050506040513d60208110156200079c57600080fd5b5051600a546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b158015620007f257600080fd5b505afa15801562000807573d6000803e3d6000fd5b505050506040513d60208110156200081e57600080fd5b505190506001600160a01b0381166200093557600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200088057600080fd5b505afa15801562000895573d6000803e3d6000fd5b505050506040513d6020811015620008ac57600080fd5b5051600a54604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200090457600080fd5b505af115801562000919573d6000803e3d6000fd5b505050506040513d60208110156200093057600080fd5b505190505b6001600160a01b038281166000908152600c602052604090208054600160ff199091168117909155600980546001600160a01b03191684841617908190556200098092169062000c27565b5050565b6005546001600160a01b031690565b6200099d620005b5565b6005546001600160a01b03908116911614620009ef576040805162461bcd60e51b8152602060048201819052602482015260008051602062008d97833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff161515811515141562000a64576040805162461bcd60e51b815260206004820152601a60248201527f4163636f756e7420616c726561647920276578636c7564656427000000000000604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b6001600160a01b03821662000b20576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b62000b3c8160025462000bc560201b62003f751790919060201c565b6002556001600160a01b0382166000908152602081815260409091205462000b6f91839062003f7562000bc5821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60008282018381101562000c20576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b0382166000908152600b602052604090205460ff161515811515141562000c875760405162461bcd60e51b815260040180806020018281038252603881526020018062008d3c6038913960400191505060405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff1916821580159190911790915562000d22576008546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b15801562000d0857600080fd5b505af115801562000d1d573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000d96576000855562000de1565b82601f1062000db157805160ff191683800117855562000de1565b8280016001018555821562000de1579182015b8281111562000de157825182559160200191906001019062000dc4565b5062000def92915062000e01565b5090565b611fc68062006d7683390190565b5b8082111562000def576000815560010162000e02565b615f4e8062000e286000396000f3fe6080604052600436106103ff5760003560e01c806204cf0b1461040b5780630483f7a01461043957806306fdde0314610474578063095ea7b3146104fe5780630fb3701c1461054b57806312da9de11461057557806312db00161461058a57806313114a9d1461059f5780631694505e146105c657806316c38b3c146105f757806318160ddd146106235780631fa71a3b1461063857806323b872dd1461066257806325c60816146106a55780632a32cb9f146106ba5780632c1f5216146107355780632c9fd2291461074a57806330bb4cff1461077d578063313ce5671461079257806336a143c1146107bd57806339509351146107f05780633e2763ba1461082957806340c10f191461083e578063423ad37514610877578063443ad4d31461088c578063455a4396146108bf57806349bd5a5e146108fa5780634e45e92a1461090f5780634e71d92d146109245780634fbee193146109395780635b769f3c1461096c5780635c975abb1461099f5780635dc106d1146109b45780635dd912f5146109c95780636402511e146109de57806364b0f65314610a0857806365b8dbc014610a1d5780636724348214610a505780636843cd8414610b1b5780636ddd171314610b4e57806370a0823114610b63578063715018a614610b9657806372d580ef14610bab578063736dc68414610bd7578063787a08a614610bec5780637b4cf05f14610c015780638372a4d014610c1657806386349e0d14610c5157806388bdd9be14610c845780638ab8ef0614610cb75780638c3e7c1d14610ccc5780638da5cb5b14610cf657806394f1682a14610d0b57806395d89b4114610d3557806395f6f56714610d4a57806398118cb414610d765780639a7a23d614610d8b5780639aa8d3d814610dc65780639b6c3ef514610df95780639e78fb4f14610e0e578063a26579ad14610e23578063a457c2d714610e38578063a4c9e07f14610e71578063a5b01dfa14610e86578063a8b9d24014610e9b578063a9059cbb14610ece578063acca78df14610f07578063ad56c13c14610f3a578063ad5c464814610faa578063b0aef70214610fbf578063b62496f514610feb578063c02466681461101e578063cec10c1114611059578063d0a398141461108f578063d406a1ec146110a4578063d58f2f27146110d7578063dc6ba803146110ec578063dd62ed3e1461111e578063df56aaaf14611159578063e01af92c1461116e578063e2f456051461119a578063e3645ac4146111af578063e54f4faa146111c4578063e6bd610d146111d9578063e98030c7146111ee578063eb2889f214611218578063ecde9c8e1461122d578063f1f3142c14611260578063f2fde38b1461128c578063f56a1117146112bf578063fe575a87146112eb57610406565b3661040657005b600080fd5b34801561041757600080fd5b506104376004803603602081101561042e57600080fd5b5035151561131e565b005b34801561044557600080fd5b506104376004803603604081101561045c57600080fd5b506001600160a01b03813516906020013515156113e4565b34801561048057600080fd5b50610489611578565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104c35781810151838201526020016104ab565b50505050905090810190601f1680156104f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050a57600080fd5b506105376004803603604081101561052157600080fd5b506001600160a01b03813516906020013561160e565b604080519115158252519081900360200190f35b34801561055757600080fd5b506104376004803603602081101561056e57600080fd5b503561162c565b34801561058157600080fd5b506104376116dd565b34801561059657600080fd5b50610537611786565b3480156105ab57600080fd5b506105b4611796565b60408051918252519081900360200190f35b3480156105d257600080fd5b506105db61179c565b604080516001600160a01b039092168252519081900360200190f35b34801561060357600080fd5b506104376004803603602081101561061a57600080fd5b503515156117ab565b34801561062f57600080fd5b506105b461181f565b34801561064457600080fd5b506104376004803603602081101561065b57600080fd5b5035611825565b34801561066e57600080fd5b506105376004803603606081101561068557600080fd5b506001600160a01b038135811691602081013590911690604001356118e5565b3480156106b157600080fd5b5061043761196c565b3480156106c657600080fd5b50610437600480360360408110156106dd57600080fd5b810190602081018135600160201b8111156106f757600080fd5b82018360208201111561070957600080fd5b803590602001918460208302840111600160201b8311171561072a57600080fd5b9193509150356119d3565b34801561074157600080fd5b506105db611ad6565b34801561075657600080fd5b506104376004803603602081101561076d57600080fd5b50356001600160a01b0316611ae5565b34801561078957600080fd5b506105b4611bc8565b34801561079e57600080fd5b506107a7611c3e565b6040805160ff9092168252519081900360200190f35b3480156107c957600080fd5b506105b4600480360360208110156107e057600080fd5b50356001600160a01b0316611c43565b3480156107fc57600080fd5b506105376004803603604081101561081357600080fd5b506001600160a01b038135169060200135611c55565b34801561083557600080fd5b506105b4611ca3565b34801561084a57600080fd5b506104376004803603604081101561086157600080fd5b506001600160a01b038135169060200135611ca9565b34801561088357600080fd5b506105b4611d0b565b34801561089857600080fd5b50610537600480360360208110156108af57600080fd5b50356001600160a01b0316611d11565b3480156108cb57600080fd5b50610437600480360360408110156108e257600080fd5b506001600160a01b0381351690602001351515611d26565b34801561090657600080fd5b506105db611e80565b34801561091b57600080fd5b50610537611e8f565b34801561093057600080fd5b50610437611e9f565b34801561094557600080fd5b506105376004803603602081101561095c57600080fd5b50356001600160a01b0316611f20565b34801561097857600080fd5b506104376004803603602081101561098f57600080fd5b50356001600160a01b0316611f42565b3480156109ab57600080fd5b50610537611fbc565b3480156109c057600080fd5b50610537611fcb565b3480156109d557600080fd5b50610537611fdb565b3480156109ea57600080fd5b5061043760048036036020811015610a0157600080fd5b5035611feb565b348015610a1457600080fd5b506105b461209c565b348015610a2957600080fd5b5061043760048036036020811015610a4057600080fd5b50356001600160a01b03166120e1565b348015610a5c57600080fd5b5061043760048036036040811015610a7357600080fd5b810190602081018135600160201b811115610a8d57600080fd5b820183602082011115610a9f57600080fd5b803590602001918460208302840111600160201b83111715610ac057600080fd5b919390929091602081019035600160201b811115610add57600080fd5b820183602082011115610aef57600080fd5b803590602001918460208302840111600160201b83111715610b1057600080fd5b509092509050612491565b348015610b2757600080fd5b506105b460048036036020811015610b3e57600080fd5b50356001600160a01b03166125a4565b348015610b5a57600080fd5b50610537612627565b348015610b6f57600080fd5b506105b460048036036020811015610b8657600080fd5b50356001600160a01b0316612630565b348015610ba257600080fd5b5061043761264b565b348015610bb757600080fd5b5061043760048036036020811015610bce57600080fd5b503515156126db565b348015610be357600080fd5b506105376127a1565b348015610bf857600080fd5b506105376127b1565b348015610c0d57600080fd5b506105376127c1565b348015610c2257600080fd5b5061043760048036036040811015610c3957600080fd5b506001600160a01b03813516906020013515156127d1565b348015610c5d57600080fd5b5061043760048036036020811015610c7457600080fd5b50356001600160a01b031661293f565b348015610c9057600080fd5b5061043760048036036020811015610ca757600080fd5b50356001600160a01b0316612a04565b348015610cc357600080fd5b506105b4612d62565b348015610cd857600080fd5b5061043760048036036020811015610cef57600080fd5b5035612d68565b348015610d0257600080fd5b506105db612e19565b348015610d1757600080fd5b5061043760048036036020811015610d2e57600080fd5b5035612e28565b348015610d4157600080fd5b50610489612ec2565b348015610d5657600080fd5b5061043760048036036020811015610d6d57600080fd5b50351515612f23565b348015610d8257600080fd5b506105b4612f99565b348015610d9757600080fd5b5061043760048036036040811015610dae57600080fd5b506001600160a01b0381351690602001351515612f9f565b348015610dd257600080fd5b506105b460048036036020811015610de957600080fd5b50356001600160a01b031661304e565b348015610e0557600080fd5b506104376132bc565b348015610e1a57600080fd5b5061043761332a565b348015610e2f57600080fd5b506105b46134a7565b348015610e4457600080fd5b5061053760048036036040811015610e5b57600080fd5b506001600160a01b0381351690602001356134ec565b348015610e7d57600080fd5b506105b4613554565b348015610e9257600080fd5b5061053761355a565b348015610ea757600080fd5b506105b460048036036020811015610ebe57600080fd5b50356001600160a01b031661356a565b348015610eda57600080fd5b5061053760048036036040811015610ef157600080fd5b506001600160a01b0381351690602001356135bb565b348015610f1357600080fd5b5061053760048036036020811015610f2a57600080fd5b50356001600160a01b03166135cf565b348015610f4657600080fd5b50610f6d60048036036020811015610f5d57600080fd5b50356001600160a01b03166135e4565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610fb657600080fd5b506105db613696565b348015610fcb57600080fd5b5061043760048036036020811015610fe257600080fd5b503515156136a5565b348015610ff757600080fd5b506105376004803603602081101561100e57600080fd5b50356001600160a01b031661376b565b34801561102a57600080fd5b506104376004803603604081101561104157600080fd5b506001600160a01b0381351690602001351515613780565b34801561106557600080fd5b506104376004803603606081101561107c57600080fd5b50803590602081013590604001356138a9565b34801561109b57600080fd5b506105b461397e565b3480156110b057600080fd5b50610437600480360360208110156110c757600080fd5b50356001600160a01b0316613984565b3480156110e357600080fd5b506105b4613a43565b3480156110f857600080fd5b506104376004803603604081101561110f57600080fd5b50803590602001351515613a49565b34801561112a57600080fd5b506105b46004803603604081101561114157600080fd5b506001600160a01b0381358116916020013516613b23565b34801561116557600080fd5b506105db613b4e565b34801561117a57600080fd5b506104376004803603602081101561119157600080fd5b50351515613b5d565b3480156111a657600080fd5b506105b4613bc8565b3480156111bb57600080fd5b506105b4613bce565b3480156111d057600080fd5b506105b4613bd4565b3480156111e557600080fd5b506105b4613bda565b3480156111fa57600080fd5b506104376004803603602081101561121157600080fd5b5035613c1f565b34801561122457600080fd5b50610537613cc4565b34801561123957600080fd5b506104376004803603602081101561125057600080fd5b50356001600160a01b0316613cd2565b34801561126c57600080fd5b506104376004803603602081101561128357600080fd5b50351515613d91565b34801561129857600080fd5b50610437600480360360208110156112af57600080fd5b50356001600160a01b0316613e07565b3480156112cb57600080fd5b50610437600480360360208110156112e257600080fd5b50351515613eee565b3480156112f757600080fd5b506105376004803603602081101561130e57600080fd5b50356001600160a01b0316613f60565b611326613fd4565b6005546001600160a01b03908116911614611376576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60205460ff600160501b90910416151581151514156113c65760405162461bcd60e51b815260040180806020018281038252602d815260200180615bef602d913960400191505060405180910390fd5b60208054911515600160501b0260ff60501b19909216919091179055565b6113ec613fd4565b6005546001600160a01b0390811691161461143c576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60085460408051634e7b827f60e01b81526001600160a01b03858116600483015291519190921691634e7b827f916024808301926020929190829003018186803b15801561148957600080fd5b505afa15801561149d573d6000803e3d6000fd5b505050506040513d60208110156114b357600080fd5b505115611507576040805162461bcd60e51b815260206004820152601f60248201527f416c7265616479206578636c756465642066726f6d206469766964656e647300604482015290519081900360640190fd5b6008546040805162241fbd60e51b81526001600160a01b038581166004830152841515602483015291519190921691630483f7a091604480830192600092919082900301818387803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b505050505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b5050505050905090565b600061162261161b613fd4565b8484613fd8565b5060015b92915050565b611634613fd4565b6005546001600160a01b03908116911614611684576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60175461169982670de0b6b3a76400006140c4565b601781905560408051838152602081019290925280517f47e32629af1fc3c60a5654749bbbe503cf7b16ccb001804be0740e01ea50ba159281900390910190a15050565b6116e5613fd4565b6005546001600160a01b03908116911614611735576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6005546006546040516001600160a01b039283169290911690600080516020615d7b83398151915290600090a3600554600680546001600160a01b0319166001600160a01b03909216919091179055565b602054600160201b900460ff1681565b60195481565b6007546001600160a01b031681565b6117b3613fd4565b6005546001600160a01b03908116911614611803576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60208054911515620100000262ff000019909216919091179055565b60025490565b61182d613fd4565b6005546001600160a01b0390811691161461187d576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60085460408051631fa71a3b60e01b81526004810184905290516001600160a01b0390921691631fa71a3b9160248082019260009290919082900301818387803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b5050505050565b60006118f284848461411d565b611962846118fe613fd4565b61195d85604051806060016040528060288152602001615d33602891396001600160a01b038a1660009081526001602052604081209061193c613fd4565b6001600160a01b0316815260208101919091526040016000205491906147ad565b613fd8565b5060019392505050565b611974613fd4565b6005546001600160a01b039081169116146119c4576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6020805460ff60281b19169055565b6119db613fd4565b6005546001600160a01b03908116911614611a2b576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b600080611a4083670de0b6b3a76400006140c4565b90505b838210156118de576000858584818110611a5957fe5b905060200201356001600160a01b03169050611a7633828461411d565b6001600160a01b038116600090815260106020526040902054611a999083613f75565b6001600160a01b03909116600090815260106020908152604080832093909355600f905220805460ff191660019081179091559190910190611a43565b6008546001600160a01b031681565b611aed613fd4565b6006546001600160a01b03908116911614611b395760405162461bcd60e51b8152600401808060200182810382526024815260200180615b256024913960400191505060405180910390fd5b6001600160a01b038116611b7e5760405162461bcd60e51b8152600401808060200182810382526026815260200180615b496026913960400191505060405180910390fd5b6006546040516001600160a01b03808416921690600080516020615d7b83398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600854604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015611c0d57600080fd5b505afa158015611c21573d6000803e3d6000fd5b505050506040513d6020811015611c3757600080fd5b5051905090565b601290565b60106020526000908152604090205481565b6000611622611c62613fd4565b8461195d8560016000611c73613fd4565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490613f75565b601d5481565b611cb1613fd4565b6006546001600160a01b03908116911614611cfd5760405162461bcd60e51b8152600401808060200182810382526024815260200180615b256024913960400191505060405180910390fd5b611d078282614844565b5050565b601a5481565b600c6020526000908152604090205460ff1681565b611d2e613fd4565b6005546001600160a01b03908116911614611d7e576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b8015611e55576001600160a01b0382166000908152600e602052604090205460ff1615611de8576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6008546040805162241fbd60e51b81526001600160a01b0385811660048301526001602483015291519190921691630483f7a091604480830192600092919082900301818387803b158015611e3c57600080fd5b505af1158015611e50573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6009546001600160a01b031681565b6020546301000000900460ff1681565b6008546040805163bc4c4b3760e01b815233600482015260006024820181905291516001600160a01b039093169263bc4c4b3792604480840193602093929083900390910190829087803b158015611ef657600080fd5b505af1158015611f0a573d6000803e3d6000fd5b505050506040513d6020811015611d0757600080fd5b6001600160a01b0381166000908152600d602052604090205460ff165b919050565b611f4a613fd4565b6005546001600160a01b03908116911614611f9a576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60205462010000900460ff1681565b602054600160481b900460ff1681565b602054600160401b900460ff1681565b611ff3613fd4565b6005546001600160a01b03908116911614612043576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60185461205882670de0b6b3a76400006140c4565b601881905560408051838152602081019290925280517fab0ec7468909bac916971a36711bb7a453201e59940de1fb0be6acc303854ffd9281900390910190a15050565b600854604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015611c0d57600080fd5b6120e9613fd4565b6005546001600160a01b03908116911614612139576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6007546001600160a01b03828116911614156121865760405162461bcd60e51b8152600401808060200182810382526023815260200180615c566023913960400191505060405180910390fd5b6001600160a01b0381166121cb5760405162461bcd60e51b8152600401808060200182810382526025815260200180615dbe6025913960400191505060405180910390fd5b6007546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b039081166000908152600c60209081526040808320805460ff1990811690915560095485168452600b83528184208054909116905584546001600160a01b0319168685161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b15801561228f57600080fd5b505afa1580156122a3573d6000803e3d6000fd5b505050506040513d60208110156122b957600080fd5b5051600a546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561230e57600080fd5b505afa158015612322573d6000803e3d6000fd5b505050506040513d602081101561233857600080fd5b505190506001600160a01b03811661244857600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561239857600080fd5b505afa1580156123ac573d6000803e3d6000fd5b505050506040513d60208110156123c257600080fd5b5051600a54604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b505050506040513d602081101561244357600080fd5b505190505b6001600160a01b038281166000908152600c602052604090208054600160ff199091168117909155600980546001600160a01b0319168484161790819055611d07921690614916565b612499613fd4565b6005546001600160a01b039081169116146124e9576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b828114612539576040805162461bcd60e51b8152602060048201526019602482015278105c9c985e481cda5e995cc81b5d5cdd08189948195c5d585b603a1b604482015290519081900360640190fd5b60005b838110156118de576000612573670de0b6b3a764000085858581811061255e57fe5b905060200201356140c490919063ffffffff16565b905061259b3387878581811061258557fe5b905060200201356001600160a01b03168361411d565b5060010161253c565b600854604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156125f557600080fd5b505afa158015612609573d6000803e3d6000fd5b505050506040513d602081101561261f57600080fd5b505192915050565b60205460ff1681565b6001600160a01b031660009081526020819052604090205490565b612653613fd4565b6005546001600160a01b039081169116146126a3576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b031690600080516020615d7b833981519152908390a3600580546001600160a01b0319169055565b6126e3613fd4565b6005546001600160a01b03908116911614612733576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60205460ff600160481b90910416151581151514156127835760405162461bcd60e51b8152600401808060200182810382526028815260200180615cb26028913960400191505060405180910390fd5b60208054911515600160481b0260ff60481b19909216919091179055565b602054600160381b900460ff1681565b602054600160301b900460ff1681565b602054600160281b900460ff1681565b6127d9613fd4565b6005546001600160a01b03908116911614612829576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6007546001600160a01b03838116911614156128765760405162461bcd60e51b8152600401808060200182810382526039815260200180615c796039913960400191505060405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff16151581151514156128d45760405162461bcd60e51b815260040180806020018281038252603a815260200180615c1c603a913960400191505060405180910390fd5b6001600160a01b038281166000818152600c6020526040808220805460ff1916861515179055600854815162241fbd60e51b81526004810194909452602484018390529051931692630483f7a092604480820193929182900301818387803b15801561155c57600080fd5b612947613fd4565b6005546001600160a01b03908116911614612997576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b0381166129dc5760405162461bcd60e51b8152600401808060200182810382526023815260200180615a8c6023913960400191505060405180910390fd5b602080546001600160a01b03909216600160601b026001600160601b03909216919091179055565b612a0c613fd4565b6005546001600160a01b03908116911614612a5c576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6008546001600160a01b0382811691161415612aa95760405162461bcd60e51b815260040180806020018281038252602d815260200180615eec602d913960400191505060405180910390fd5b6040805163064591a760e11b8152306004820152905182916001600160a01b03831691630c8b234e91602480820192602092909190829003018186803b158015612af257600080fd5b505afa158015612b06573d6000803e3d6000fd5b505050506040513d6020811015612b1c57600080fd5b5051612b595760405162461bcd60e51b8152600401808060200182810382526038815260200180615cda6038913960400191505060405180910390fd5b6040805162241fbd60e51b81526001600160a01b0383166004820181905260006024830181905292519092630483f7a0926044808201939182900301818387803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50506040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b50505050806001600160a01b0316630483f7a0612c38612e19565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b158015612c8257600080fd5b505af1158015612c96573d6000803e3d6000fd5b50506007546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506008546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b601f5481565b612d70613fd4565b6005546001600160a01b03908116911614612dc0576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b601d54612dd582670de0b6b3a76400006140c4565b601d81905560408051838152602081019290925280517f0273e0904ccd5aa39aadf810a8d0fc96671a08ba577fe49feab57fa1b6aad8309281900390910190a15050565b6005546001600160a01b031690565b612e30613fd4565b6005546001600160a01b03908116911614612e80576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b601f54604080519182526020820183905280517f8c77526a6c0a7aa7cec23fef2dbb5958248deca84a91f836bd9e04a2aea4e6db9281900390910190a1601f55565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156116045780601f106115d957610100808354040283529160200191611604565b612f2b613fd4565b6005546001600160a01b03908116911614612f7b576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6020805491151563010000000263ff00000019909216919091179055565b60165481565b612fa7613fd4565b6005546001600160a01b03908116911614612ff7576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6009546001600160a01b03838116911614156130445760405162461bcd60e51b8152600401808060200182810382526035815260200180615e036035913960400191505060405180910390fd5b611d078282614916565b6001600160a01b0381166000908152600e602052604081205460ff16156130b2576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b602054600160481b900460ff1680156130e957506001600160a01b0382166000908152601260205260409020544262015180909101115b156130f657506000611f3d565b6130ff82612630565b90506000613118601a5442614a4890919063ffffffff16565b90506301dfe20081118061314557506001600160a01b0383166000908152600f602052604090205460ff16155b6131e95760006131558483614a8a565b9050601d548111613166578061316a565b601d545b6001600160a01b0385166000908152601060205260409020549091506131909082614a48565b61319985612630565b11156131dc576001600160a01b0384166000908152601060205260409020546131d5906131c69083614a48565b6131cf86612630565b90614a48565b92506131e7565b600092505050611f3d565b505b602054600160501b900460ff16801561322057506001600160a01b0383166000908152601260205260409020544262015180909101115b1561328d576001600160a01b038316600090815260136020526040812054601f54101561324e576000613273565b6001600160a01b038416600090815260136020526040902054601f5461327391614a48565b9050808311156132835780613285565b825b9250506132b6565b602054600160501b900460ff16156132b657601f548211156132b157601f546132b3565b815b91505b50919050565b6132c4613fd4565b6005546001600160a01b03908116911614613314576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b42601a5543601b556020805462ff000019169055565b613332613fd4565b6005546001600160a01b03908116911614613382576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6007546040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b1580156133c757600080fd5b505afa1580156133db573d6000803e3d6000fd5b505050506040513d60208110156133f157600080fd5b5051600a54604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b15801561344857600080fd5b505af115801561345c573d6000803e3d6000fd5b505050506040513d602081101561347257600080fd5b5051600980546001600160a01b0319166001600160a01b0380841691909117918290559192506134a491166001614916565b50565b60085460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015611c0d57600080fd5b60006116226134f9613fd4565b8461195d85604051806060016040528060258152602001615ec76025913960016000613523613fd4565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906147ad565b60145481565b602054600160501b900460ff1681565b600854604080516302a2e74960e61b81526001600160a01b0384811660048301529151600093929092169163a8b9d24091602480820192602092909190829003018186803b1580156125f557600080fd5b60006116226135c8613fd4565b848461411d565b600f6020526000908152604090205460ff1681565b6008546040805163fbcbc0f160e01b81526001600160a01b038481166004830152915160009384938493849384938493169163fbcbc0f19160248083019260c0929190829003018186803b15801561363b57600080fd5b505afa15801561364f573d6000803e3d6000fd5b505050506040513d60c081101561366557600080fd5b508051602082015160408301516060840151608085015160a090950151939c929b5090995097509195509350915050565b600a546001600160a01b031681565b6136ad613fd4565b6005546001600160a01b039081169116146136fd576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60205460ff600160401b909104161515811515141561374d5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b60208054911515600160401b0260ff60401b19909216919091179055565b600b6020526000908152604090205460ff1681565b613788613fd4565b6005546001600160a01b039081169116146137d8576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff1615158115151415613849576040805162461bcd60e51b815260206004820152601a6024820152794163636f756e7420616c726561647920276578636c756465642760301b604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b6138b1613fd4565b6005546001600160a01b03908116911614613901576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6014839055601682905560158190556139248161391e8585613f75565b90613f75565b601981905560145460165460155460408051938452602084019290925282820152606082019290925290517f7027e29faa2460f22e800d92db38d4795b668c7104da6b87afaeaf502a269ca59181900360800190a1505050565b601e5481565b61398c613fd4565b6005546001600160a01b039081169116146139dc576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b038116613a215760405162461bcd60e51b8152600401808060200182810382526023815260200180615ea46023913960400191505060405180910390fd5b602180546001600160a01b0319166001600160a01b0392909216919091179055565b60155481565b613a51613fd4565b6005546001600160a01b03908116911614613aa1576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b601c54613ab683670de0b6b3a76400006140c4565b601c81905560208054841515600160201b90810260ff60201b199092169190911780835560408051868152938401949094520460ff1615158183015290517fd6d1ec2dffd2df16cb6d0859837b49920203bb429cc368ce9eab6df4d60e94399181900360600190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031690565b613b65613fd4565b6005546001600160a01b03908116911614613bb5576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6020805460ff1916911515919091179055565b60185481565b601b5481565b601c5481565b60085460408051632f842d8560e21b815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015611c0d57600080fd5b613c27613fd4565b6005546001600160a01b03908116911614613c77576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6008546040805163e98030c760e01b81526004810184905290516001600160a01b039092169163e98030c79160248082019260009290919082900301818387803b1580156118ca57600080fd5b602054610100900460ff1681565b613cda613fd4565b6005546001600160a01b03908116911614613d2a576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b038116613d6f5760405162461bcd60e51b8152600401808060200182810382526023815260200180615e816023913960400191505060405180910390fd5b602280546001600160a01b0319166001600160a01b0392909216919091179055565b613d99613fd4565b6005546001600160a01b03908116911614613de9576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60208054911515600160381b0260ff60381b19909216919091179055565b613e0f613fd4565b6005546001600160a01b03908116911614613e5f576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b038116613ea45760405162461bcd60e51b8152600401808060200182810382526026815260200180615b496026913960400191505060405180910390fd5b6005546040516001600160a01b03808416921690600080516020615d7b83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b613ef6613fd4565b6005546001600160a01b03908116911614613f46576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b602080549115156101000261ff0019909216919091179055565b600e6020526000908152604090205460ff1681565b600082820183811015613fcd576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b03831661401d5760405162461bcd60e51b8152600401808060200182810382526024815260200180615e5d6024913960400191505060405180910390fd5b6001600160a01b0382166140625760405162461bcd60e51b8152600401808060200182810382526022815260200180615b6f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000826140d357506000611626565b828202828482816140e057fe5b0414613fcd5760405162461bcd60e51b8152600401808060200182810382526021815260200180615d126021913960400191505060405180910390fd5b6001600160a01b0383166141625760405162461bcd60e51b8152600401808060200182810382526025815260200180615e386025913960400191505060405180910390fd5b6001600160a01b0382166141a75760405162461bcd60e51b8152600401808060200182810382526023815260200180615aaf6023913960400191505060405180910390fd5b6001600160a01b0383166000908152600e602052604090205460ff161580156141e957506001600160a01b0382166000908152600e602052604090205460ff16155b80156142055750326000908152600e602052604090205460ff16155b61424c576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b614254612e19565b6001600160a01b0316836001600160a01b0316146142bb5760205462010000900460ff16156142bb576040805162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81c185d5cd95960921b604482015290519081900360640190fd5b6142c3612e19565b6001600160a01b0316836001600160a01b0316141580156142fd57506142e7612e19565b6001600160a01b0316826001600160a01b031614155b1561430d5761430d838383614c57565b326000908152600e602052604090205460ff161561432a576147a8565b600061433584612630565b9050600061434e601a5442614a4890919063ffffffff16565b90506301dfe2008111156143a3576001600160a01b0385166000908152600f602052604090205460ff161561439e576001600160a01b0385166000908152600f60205260409020805460ff191690555b614478565b60006143af8683614a8a565b6001600160a01b0386166000908152600b602052604090205490915060ff16806143f157506001600160a01b0385166000908152600c602052604090205460ff165b1561440c57601d5481116144055780614409565b601d545b90505b6001600160a01b03861660009081526010602052604090205461442f9082614a48565b6144398486614a48565b10156144765760405162461bcd60e51b8152600401808060200182810382526032815260200180615ad26032913960400191505060405180910390fd5b505b82614490576144898585600061549c565b50506147a8565b600061449b30612630565b6018546020549192508210159060ff1680156144c15750602054600160581b900460ff16155b80156144e657506001600160a01b0387166000908152600b602052604090205460ff16155b80156144ef5750805b1561451e576020805460ff60581b1916600160581b179055614510826155da565b6020805460ff60581b191690555b602080546001600160a01b0389166000908152600d90925260409091205460ff600160581b90920482161591168061456e57506001600160a01b0387166000908152600d602052604090205460ff165b806145835750602054600160401b900460ff16155b1561458c575060005b80156146b15760006145b460646145ae6019548a6140c490919063ffffffff16565b90615752565b90506145be612e19565b6001600160a01b0316896001600160a01b0316141580156145e857506001600160a01b0389163014155b801561467657506001600160a01b0389166000908152600b602052604090205460ff168061462e57506001600160a01b0388166000908152600b602052604090205460ff165b8061465157506001600160a01b0389166000908152600c602052604090205460ff165b8061467457506001600160a01b0388166000908152600c602052604090205460ff165b155b156146985761469560646145ae601e548a6140c490919063ffffffff16565b90505b6146a28782614a48565b96506146af89308361549c565b505b6146bc88888861549c565b6008546001600160a01b031663e30443bc896146d781612630565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561471d57600080fd5b505af192505050801561472e575060015b506008546001600160a01b031663e30443bc8861474a81612630565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561479057600080fd5b505af19250505080156147a1575060015b5050505050505b505050565b6000818484111561483c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148015781810151838201526020016147e9565b50505050905090810190601f16801561482e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661489f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546148ac9082613f75565b6002556001600160a01b0382166000908152602081905260409020546148d29082613f75565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020615de38339815191529281900390910190a35050565b6001600160a01b0382166000908152600b602052604090205460ff16151581151514156149745760405162461bcd60e51b8152600401808060200182810382526038815260200180615b916038913960400191505060405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155614a0c576008546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b1580156149f357600080fd5b505af1158015614a07573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6000613fcd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506147ad565b6001600160a01b0382166000908152600f602052604081205460ff1615611626576001600160a01b03831660009081526010602052604090205462015180831015614ad85760009150614c50565b6224ea00831015614afa57614af3600a6145ae8360026140c4565b9150614c50565b6249d400831015614b1557614af360646145ae8360196140c4565b626ebe00831015614b3057614af360646145ae83601e6140c4565b6293a800831015614b4b57614af360646145ae8360236140c4565b62b89200831015614b6657614af360646145ae8360186140c4565b62dd7c00831015614b8157614af360646145ae83602d6140c4565b6301026600831015614b9857614af3816002615752565b6301275000831015614bb457614af360646145ae8360386140c4565b63014c3a00831015614bd057614af360646145ae83603e6140c4565b6301712400831015614bec57614af360646145ae8360446140c4565b6301960e00831015614c0857614af360646145ae83604c6140c4565b6301baf800831015614c2457614af360646145ae8360546140c4565b6301dfe200831015614c4057614af360646145ae83605c6140c4565b6301dfe200831115614c50578091505b5092915050565b602054600160481b900460ff168015614c8857506001600160a01b0382166000908152600b602052604090205460ff165b15614d11574260126000614c9a613fd4565b6001600160a01b03166001600160a01b031681526020019081526020016000205462015180011115614d11576040805162461bcd60e51b815260206004820152601b60248201527a13db99481cd95b1b081c195c8819185e481a5cc8185b1b1bddd959602a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615614dec574260126000614d3f613fd4565b6001600160a01b03166001600160a01b0316815260200190815260200160002054620151800110614d9c578060136000614d77613fd4565b6001600160a01b03168152602081019190915260400160002080549091019055614dc4565b8060136000614da9613fd4565b6001600160a01b031681526020810191909152604001600020555b4260126000614dd1613fd4565b6001600160a01b031681526020810191909152604001600020555b602054600160501b900460ff1615614e6b57601f5460136000614e0d613fd4565b6001600160a01b03166001600160a01b03168152602001908152602001600020541115614e6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180615b046021913960400191505060405180910390fd5b6020546301000000900460ff1615614edc576001600160a01b0383163014614edc57601754811115614edc576040805162461bcd60e51b8152602060048201526015602482015274195e18d959591cc81b585e081d1e08185b5bdd5b9d605a1b604482015290519081900360640190fd5b602054600160301b900460ff1615615000576001600160a01b0383163014801590614f1057506001600160a01b0382163014155b8015614f3557506001600160a01b0382166000908152600c602052604090205460ff16155b8015614f5a57506001600160a01b0382166000908152600b602052604090205460ff16155b156150005760116000614f6b613fd4565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601e01421015614fd8576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b4260116000614fe5613fd4565b6001600160a01b031681526020810191909152604001600020555b602054600160281b900460ff1615615314576001600160a01b0383166000908152600b602052604090205460ff16801561505357506001600160a01b0382166000908152600c602052604090205460ff16155b801561506857506001600160a01b0382163014155b801561507d57506001600160a01b0383163014155b1561509757326001600160a01b0383161461509757600080fd5b601b54600401431161531457326000818152600e60205260409020805460ff191660011790556001600160a01b038416148015906150de5750326001600160a01b03831614155b1561514e576008546040805162241fbd60e51b81523260048201526001602482015290516001600160a01b0390921691630483f7a09160448082019260009290919082900301818387803b15801561513557600080fd5b505af1158015615149573d6000803e3d6000fd5b505050505b6001600160a01b0383166000908152600b602052604090205460ff1615801561519057506001600160a01b0383166000908152600c602052604090205460ff16155b80156151a557506001600160a01b0383163014155b15615231576001600160a01b038084166000818152600e6020526040808220805460ff19166001908117909155600854825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b15801561521857600080fd5b505af115801561522c573d6000803e3d6000fd5b505050505b6001600160a01b0382166000908152600b602052604090205460ff1615801561527357506001600160a01b0382166000908152600c602052604090205460ff16155b801561528857506001600160a01b0382163014155b15615314576001600160a01b038083166000818152600e6020526040808220805460ff19166001908117909155600854825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b1580156152fb57600080fd5b505af115801561530f573d6000803e3d6000fd5b505050505b602054600160201b900460ff161561539e576001600160a01b0383166000908152600b602052604090205460ff16801561535c57506007546001600160a01b03838116911614155b801561537157506001600160a01b0382163014155b1561539e57600061538183612630565b601c549091506153918284613f75565b111561539c57600080fd5b505b602054600160381b900460ff16156147a8576001600160a01b03831630148015906153d257506001600160a01b0382163014155b156147a8576001600160a01b0383166000908152600b602052604090205460ff168061541657506001600160a01b0382166000908152600b602052604090205460ff165b8061543957506001600160a01b0383166000908152600c602052604090205460ff165b8061545c57506001600160a01b0382166000908152600c602052604090205460ff165b6147a8576040805162461bcd60e51b815260206004820152600c60248201526b4e6f207472616e736665727360a01b604482015290519081900360640190fd5b6001600160a01b0383166154e15760405162461bcd60e51b8152600401808060200182810382526025815260200180615e386025913960400191505060405180910390fd5b6001600160a01b0382166155265760405162461bcd60e51b8152600401808060200182810382526023815260200180615aaf6023913960400191505060405180910390fd5b61556381604051806060016040528060268152602001615bc9602691396001600160a01b03861660009081526020819052604090205491906147ad565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546155929082613f75565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020615de383398151915292918290030190a3505050565b60006155f76019546145ae601654856140c490919063ffffffff16565b90506000615606826002615752565b905060006156148483614a48565b90504761562082615791565b600061562c4783614a48565b9050600061565060026145ae6019546145ae601654876140c490919063ffffffff16565b9050600061567460036145ae6019546145ae601554886140c490919063ffffffff16565b602054604051919250600160601b90046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156156b6573d6000803e3d6000fd5b506021546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156156f1573d6000803e3d6000fd5b506022546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561572c573d6000803e3d6000fd5b5061573786836158c0565b6020544790610100900460ff16156147a1576147a181615993565b6000613fcd83836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250615a26565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106157c057fe5b6001600160a01b039283166020918202929092010152600a548251911690829060019081106157eb57fe5b6001600160a01b0392831660209182029290920101526007546158119130911684613fd8565b60075460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b8381101561589757818101518382015260200161587f565b505050509050019650505050505050600060405180830381600087803b15801561155c57600080fd5b6007546158d89030906001600160a01b031684613fd8565b6007546001600160a01b031663f305d7198230856000806158f7612e19565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561596257600080fd5b505af1158015615976573d6000803e3d6000fd5b50505050506040513d606081101561598d57600080fd5b50505050565b6008546040516000916001600160a01b03169083908381818185875af1925050503d80600081146159e0576040519150601f19603f3d011682016040523d82523d6000602084013e6159e5565b606091505b505090508015611d07576040805183815290517fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19181900360200190a15050565b60008183615a755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156148015781810151838201526020016147e9565b506000838581615a8157fe5b049594505050505056fe412077616c6c65742073686f756c64206e6f742062652061646472657373207a65726f45524332303a207472616e7366657220746f20746865207a65726f206164647265737343616e277420627970617373207665737420616e642063616e2774206279706173732076657374656453656c6c4c696d69744d6178206461696c792073656c6c20616d6f756e742077617320726561636865644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726d696e744f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655570646174696e6720746f2063757272656e742076616c75652c20656e61626c654d61784461696c7953656c6c4175746f6d61746564206d61726b6574206d616b657220726f7574657220697320616c72656164792073657420746f20746861742076616c756554686520726f7574657220616c72656164792068617320746861742061646472657373526f757465722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572526f75746572735570646174696e6720746f2063757272656e742076616c75652c206461696c79436f6f6c446f776e546865206e6577206469766964656e6420747261636b6572206d757374206265206f776e656420627920746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05570646174696e6720746f2063757272656e742076616c75652c2074616b65466565734e657720726f757465722073686f756c64206e6f742062652061646472657373207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef506169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572506169727345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373432077616c6c65742073686f756c64206e6f742062652061646472657373207a65726f422077616c6c65742073686f756c64206e6f742062652061646472657373207a65726f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373a26469706673582212200af6e3e41b822daf2089a6a80cc8612e1de33fcd4c58631fcf90f0feda6b871864736f6c6343000706003360806040523480156200001157600080fd5b5060408051808201825260138082527f56435f4469766964656e645f547261636b657200000000000000000000000000602080840182815285518087019096529285528401528151919291839183916200006e916003916200014c565b508051620000849060049060208401906200014c565b50505050506001600c60006200009f6200014860201b60201c565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055328152600c909252902080549091166001908117909155620000ec62000148565b6001600160a01b031660008051602062001fa683398151915260405160405180910390a3604051600190329060008051602062001fa683398151915290600090a3610e10600d556a0c685fa11e01ec6f000000600f55620001f8565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620001845760008555620001cf565b82601f106200019f57805160ff1916838001178555620001cf565b82800160010185558215620001cf579182015b82811115620001cf578251825591602001919060010190620001b2565b50620001dd929150620001e1565b5090565b5b80821115620001dd5760008155600101620001e2565b611d9e80620002086000396000f3fe60806040526004361061016c5760003560e01c806303c83302146101805780630483f7a01461018857806306fdde03146101c3578063095ea7b31461024d57806309bbedde1461029a5780630c8b234e146102c157806318160ddd146102f45780631fa71a3b14610309578063226cfa3d1461033357806323b872dd1461036657806327ce0147146103a9578063313ce567146103dc57806339509351146104075780634e7b827f146104405780636a474002146104735780636f2789ec1461048857806370a082311461049d57806385a6b3ae146104d057806391b89fba146104e557806395d89b4114610518578063a457c2d71461052d578063a8b9d24014610566578063a9059cbb14610599578063aafd847a146105d2578063adf4849014610605578063bc4c4b3714610640578063be10b6141461067b578063dd62ed3e14610690578063e30443bc146106cb578063e98030c714610704578063fbcbc0f11461072e5761017b565b3661017b5761017961079e565b005b600080fd5b61017961079e565b34801561019457600080fd5b50610179600480360360408110156101ab57600080fd5b506001600160a01b038135169060200135151561082f565b3480156101cf57600080fd5b506101d86109bf565b6040805160208082528351818301528351919283929083019185019080838360005b838110156102125781810151838201526020016101fa565b50505050905090810190601f16801561023f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561025957600080fd5b506102866004803603604081101561027057600080fd5b506001600160a01b038135169060200135610a55565b604080519115158252519081900360200190f35b3480156102a657600080fd5b506102af610a73565b60408051918252519081900360200190f35b3480156102cd57600080fd5b50610286600480360360208110156102e457600080fd5b50356001600160a01b0316610a79565b34801561030057600080fd5b506102af610a9b565b34801561031557600080fd5b506101796004803603602081101561032c57600080fd5b5035610aa1565b34801561033f57600080fd5b506102af6004803603602081101561035657600080fd5b50356001600160a01b0316610b8f565b34801561037257600080fd5b506102866004803603606081101561038957600080fd5b506001600160a01b03813581169160208101359091169060400135610ba1565b3480156103b557600080fd5b506102af600480360360208110156103cc57600080fd5b50356001600160a01b0316610c28565b3480156103e857600080fd5b506103f1610c85565b6040805160ff9092168252519081900360200190f35b34801561041357600080fd5b506102866004803603604081101561042a57600080fd5b506001600160a01b038135169060200135610c8a565b34801561044c57600080fd5b506102866004803603602081101561046357600080fd5b50356001600160a01b0316610cd8565b34801561047f57600080fd5b50610179610ced565b34801561049457600080fd5b506102af610d24565b3480156104a957600080fd5b506102af600480360360208110156104c057600080fd5b50356001600160a01b0316610d2a565b3480156104dc57600080fd5b506102af610d45565b3480156104f157600080fd5b506102af6004803603602081101561050857600080fd5b50356001600160a01b0316610d4b565b34801561052457600080fd5b506101d8610d56565b34801561053957600080fd5b506102866004803603604081101561055057600080fd5b506001600160a01b038135169060200135610db7565b34801561057257600080fd5b506102af6004803603602081101561058957600080fd5b50356001600160a01b0316610e1f565b3480156105a557600080fd5b50610286600480360360408110156105bc57600080fd5b506001600160a01b038135169060200135610e4b565b3480156105de57600080fd5b506102af600480360360208110156105f557600080fd5b50356001600160a01b0316610e5f565b34801561061157600080fd5b506101796004803603604081101561062857600080fd5b506001600160a01b0381351690602001351515610e7a565b34801561064c57600080fd5b506102866004803603604081101561066357600080fd5b506001600160a01b0381351690602001351515610f94565b34801561068757600080fd5b506102af6110d4565b34801561069c57600080fd5b506102af600480360360408110156106b357600080fd5b506001600160a01b03813581169160200135166110da565b3480156106d757600080fd5b50610179600480360360408110156106ee57600080fd5b506001600160a01b038135169060200135611105565b34801561071057600080fd5b506101796004803603602081101561072757600080fd5b5035611263565b34801561073a57600080fd5b506107616004803603602081101561075157600080fd5b50356001600160a01b031661138f565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b60006107a8610a9b565b116107b257600080fd5b341561082d576107e36107c3610a9b565b6107d134600160801b611406565b816107d857fe5b600554919004611466565b60055560408051348152905133917fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511919081900360200190a26008546108299034611466565b6008555b565b600c600061083b6114be565b6001600160a01b0316815260208101919091526040016000205460ff16610897576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600a602052604090205460ff1615610900576040805162461bcd60e51b81526020600482015260186024820152771058d8dbdd5b9d08185b1c9958591e48195e18db1d59195960421b604482015290519081900360640190fd5b6001600160a01b0382166000908152600a60205260408120805460ff1916600117905561092e9083906114c2565b8015610987576001600160a01b03821660009081526009602052604090205460ff1615610987576001600160a01b0382166000908152600960205260409020805460ff19169055600e5461098390600161151c565b600e555b6040516001600160a01b038316907fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2590600090a25050565b60038054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b820191906000526020600020905b815481529060010190602001808311610a2e57829003601f168201915b5050505050905090565b6000610a69610a626114be565b848461155e565b5060015b92915050565b600e5490565b6001600160a01b0381166000908152600c602052604090205460ff165b919050565b60025490565b600c6000610aad6114be565b6001600160a01b0316815260208101919091526040016000205460ff16610b09576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001811015610b495760405162461bcd60e51b8152600401808060200182810382526034815260200180611aa56034913960400191505060405180910390fd5b600f5460405182907f9c9571fb23d65fec0768248b245e0bee0cd9e9036a4a9f9e8e417eb15188678590600090a3610b8981670de0b6b3a7640000611406565b600f5550565b600b6020526000908152604090205481565b6000610bae848484611595565b610c1e84610bba6114be565b610c1985604051806060016040528060288152602001611bb9602891396001600160a01b038a16600090815260016020526040812090610bf86114be565b6001600160a01b0316815260208101919091526040016000205491906115cc565b61155e565b5060019392505050565b6001600160a01b038116600090815260066020526040812054600160801b90610c7790610c7290610c6c610c67610c5e88610d2a565b60055490611406565b611663565b90611673565b6116a6565b81610c7e57fe5b0492915050565b601290565b6000610a69610c976114be565b84610c198560016000610ca86114be565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611466565b600a6020526000908152604090205460ff1681565b60405162461bcd60e51b8152600401808060200182810382526067815260200180611ad96067913960800191505060405180910390fd5b600d5481565b6001600160a01b031660009081526020819052604090205490565b60085481565b6000610a6d82610e1f565b60048054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610a4b5780601f10610a2057610100808354040283529160200191610a4b565b6000610a69610dc46114be565b84610c1985604051806060016040528060258152602001611d446025913960016000610dee6114be565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906115cc565b6001600160a01b038116600090815260076020526040812054610a6d90610e4584610c28565b9061151c565b6000610a69610e586114be565b8484611595565b6001600160a01b031660009081526007602052604090205490565b600c6000610e866114be565b6001600160a01b0316815260208101919091526040016000205460ff16610ee2576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600c602052604090205460ff1615158115151415610f405760405162461bcd60e51b815260040180806020018281038252602c815260200180611b40602c913960400191505060405180910390fd5b6001600160a01b0382166000818152600c6020526040808220805460ff191685151590811790915590519092917f8ae3029208fd6692a475f09e97b7a86f7993f1eb5e1edb563554aebc2883860291a35050565b6000600c6000610fa26114be565b6001600160a01b0316815260208101919091526040016000205460ff16610ffe576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0383166000908152600b6020526040902054600d54429101106110595760405162461bcd60e51b8152600401808060200182810382526035815260200180611d0f6035913960400191505060405180910390fd5b6000611064846116b9565b905080156110ca576001600160a01b0384166000818152600b60209081526040918290204290558151848152915186151593927fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf09292908290030190a36001915050610a6d565b5060009392505050565b600f5481565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b600c60006111116114be565b6001600160a01b0316815260208101919091526040016000205460ff1661116d576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600a602052604090205460ff16156111935761125f565b600f548110611201576111a682826114c2565b6001600160a01b03821660009081526009602052604090205460ff166111fc576001600160a01b0382166000908152600960205260409020805460ff19166001908117909155600e546111f891611466565b600e555b61125f565b61120c8260006114c2565b6001600160a01b03821660009081526009602052604090205460ff161561125f576001600160a01b0382166000908152600960205260409020805460ff19169055600e5461125b90600161151c565b600e555b5050565b600c600061126f6114be565b6001600160a01b0316815260208101919091526040016000205460ff166112cb576040805162461bcd60e51b81526020600482018190526024820152600080516020611be1833981519152604482015290519081900360640190fd5b610e1081101580156112e05750620151808111155b61131b5760405162461bcd60e51b815260040180806020018281038252604b815260200180611c01604b913960600191505060405180910390fd5b600d5481141561135c5760405162461bcd60e51b815260040180806020018281038252603d815260200180611c8d603d913960400191505060405180910390fd5b600d5460405182907f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f90600090a3600d55565b8060008080808061139f86610e1f565b94506113aa86610c28565b6001600160a01b0387166000908152600b60205260409020549094509250826113d357426113e1565b600d546113e1908490611466565b91504282116113f15760006113fb565b6113fb824261151c565b905091939550919395565b60008261141557506000610a6d565b8282028284828161142257fe5b041461145f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b6c6021913960400191505060405180910390fd5b9392505050565b60008282018381101561145f576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b3390565b60006114cd83610d2a565b9050808211156114f55760006114e3838361151c565b90506114ef84826117f8565b50611517565b80821015611517576000611509828461151c565b9050611515848261185c565b505b505050565b600061145f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115cc565b60405162461bcd60e51b8152600401808060200182810382526045815260200180611cca6045913960600191505060405180910390fd5b60405162461bcd60e51b815260040180806020018281038252602c815260200180611b8d602c913960400191505060405180910390fd5b6000818484111561165b5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611620578181015183820152602001611608565b50505050905090810190601f16801561164d5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60008181811215610a6d57600080fd5b60008282018183128015906116885750838112155b8061169d575060008312801561169d57508381125b61145f57600080fd5b6000808212156116b557600080fd5b5090565b6000806116c583610e1f565b905080156117ef576040805182815290516001600160a01b038516917fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d919081900360200190a26001600160a01b03831660009081526007602052604090205461172f9082611466565b6001600160a01b038416600081815260076020526040808220939093559151610bb890849084818181858888f193505050503d806000811461178d576040519150601f19603f3d011682016040523d82523d6000602084013e611792565b606091505b50509050806117dc576001600160a01b0384166000908152600760205260409020546117be908361151c565b6001600160a01b0385166000908152600760205260409020556117e7565b600092505050610a96565b509050610a96565b50600092915050565b61180282826118a0565b61183c61181d610c678360055461140690919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611972565b6001600160a01b0390921660009081526006602052604090209190915550565b61186682826119a4565b61183c611881610c678360055461140690919063ffffffff16565b6001600160a01b03841660009081526006602052604090205490611673565b6001600160a01b0382166118fb576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546119089082611466565b6002556001600160a01b03821660009081526020819052604090205461192e9082611466565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020611c4c8339815191529281900390910190a35050565b60008183038183128015906119875750838113155b8061169d575060008312801561169d575083811361145f57600080fd5b6001600160a01b0382166119e95760405162461bcd60e51b8152600401808060200182810382526021815260200180611c6c6021913960400191505060405180910390fd5b611a2681604051806060016040528060228152602001611a83602291396001600160a01b03851660009081526020819052604090205491906115cc565b6001600160a01b038316600090815260208190526040902055600254611a4c908261151c565b6002556040805182815290516000916001600160a01b03851691600080516020611c4c8339815191529181900360200190a3505056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e6365566972616c5f4469766964656e645f547261636b65723a206e65774d696e696d756d546f6b656e206d6f7265203120746f6b656e566972616c5f4469766964656e645f547261636b65723a2077697468647261774469766964656e642064697361626c65642e20557365207468652027636c61696d272066756e6374696f6e206f6e20746865206d61696e20564952414c20636f6e74726163742e4f776e6572736869703a20726f6c6520697320616c72656164792073657420746f20746869732076616c7565536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77566972616c5f4469766964656e645f547261636b65723a204e6f207472616e736665727320616c6c6f77656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572566972616c5f4469766964656e645f547261636b65723a20636c61696d57616974206d757374206265207570646174656420746f206265747765656e203120616e6420323420686f757273ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f2061646472657373566972616c5f4469766964656e645f547261636b65723a2043616e6e6f742075706461746520636c61696d5761697420746f2073616d652076616c7565566972616c5f4469766964656e645f547261636b65723a20546f6b656e206973206e6f74207472616e7366657261626c652c206e6f206e65656420746f20617070726f7665566972616c5f4469766964656e645f547261636b65723a20706c65617365207761697420666f7220616e6f7468657220636c61696d45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cc6ae6e3160f34a884cb460546af28fe4bde6b5e2c8f5a9472fcdbc93abcb5d364736f6c634300070600338ae3029208fd6692a475f09e97b7a86f7993f1eb5e1edb563554aebc288386024175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756554686520726f7574657220616c726561647920686173207468617420616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65724e657720726f757465722073686f756c64206e6f742062652061646472657373207a65726f
Deployed Bytecode
0x6080604052600436106103ff5760003560e01c806204cf0b1461040b5780630483f7a01461043957806306fdde0314610474578063095ea7b3146104fe5780630fb3701c1461054b57806312da9de11461057557806312db00161461058a57806313114a9d1461059f5780631694505e146105c657806316c38b3c146105f757806318160ddd146106235780631fa71a3b1461063857806323b872dd1461066257806325c60816146106a55780632a32cb9f146106ba5780632c1f5216146107355780632c9fd2291461074a57806330bb4cff1461077d578063313ce5671461079257806336a143c1146107bd57806339509351146107f05780633e2763ba1461082957806340c10f191461083e578063423ad37514610877578063443ad4d31461088c578063455a4396146108bf57806349bd5a5e146108fa5780634e45e92a1461090f5780634e71d92d146109245780634fbee193146109395780635b769f3c1461096c5780635c975abb1461099f5780635dc106d1146109b45780635dd912f5146109c95780636402511e146109de57806364b0f65314610a0857806365b8dbc014610a1d5780636724348214610a505780636843cd8414610b1b5780636ddd171314610b4e57806370a0823114610b63578063715018a614610b9657806372d580ef14610bab578063736dc68414610bd7578063787a08a614610bec5780637b4cf05f14610c015780638372a4d014610c1657806386349e0d14610c5157806388bdd9be14610c845780638ab8ef0614610cb75780638c3e7c1d14610ccc5780638da5cb5b14610cf657806394f1682a14610d0b57806395d89b4114610d3557806395f6f56714610d4a57806398118cb414610d765780639a7a23d614610d8b5780639aa8d3d814610dc65780639b6c3ef514610df95780639e78fb4f14610e0e578063a26579ad14610e23578063a457c2d714610e38578063a4c9e07f14610e71578063a5b01dfa14610e86578063a8b9d24014610e9b578063a9059cbb14610ece578063acca78df14610f07578063ad56c13c14610f3a578063ad5c464814610faa578063b0aef70214610fbf578063b62496f514610feb578063c02466681461101e578063cec10c1114611059578063d0a398141461108f578063d406a1ec146110a4578063d58f2f27146110d7578063dc6ba803146110ec578063dd62ed3e1461111e578063df56aaaf14611159578063e01af92c1461116e578063e2f456051461119a578063e3645ac4146111af578063e54f4faa146111c4578063e6bd610d146111d9578063e98030c7146111ee578063eb2889f214611218578063ecde9c8e1461122d578063f1f3142c14611260578063f2fde38b1461128c578063f56a1117146112bf578063fe575a87146112eb57610406565b3661040657005b600080fd5b34801561041757600080fd5b506104376004803603602081101561042e57600080fd5b5035151561131e565b005b34801561044557600080fd5b506104376004803603604081101561045c57600080fd5b506001600160a01b03813516906020013515156113e4565b34801561048057600080fd5b50610489611578565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104c35781810151838201526020016104ab565b50505050905090810190601f1680156104f05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050a57600080fd5b506105376004803603604081101561052157600080fd5b506001600160a01b03813516906020013561160e565b604080519115158252519081900360200190f35b34801561055757600080fd5b506104376004803603602081101561056e57600080fd5b503561162c565b34801561058157600080fd5b506104376116dd565b34801561059657600080fd5b50610537611786565b3480156105ab57600080fd5b506105b4611796565b60408051918252519081900360200190f35b3480156105d257600080fd5b506105db61179c565b604080516001600160a01b039092168252519081900360200190f35b34801561060357600080fd5b506104376004803603602081101561061a57600080fd5b503515156117ab565b34801561062f57600080fd5b506105b461181f565b34801561064457600080fd5b506104376004803603602081101561065b57600080fd5b5035611825565b34801561066e57600080fd5b506105376004803603606081101561068557600080fd5b506001600160a01b038135811691602081013590911690604001356118e5565b3480156106b157600080fd5b5061043761196c565b3480156106c657600080fd5b50610437600480360360408110156106dd57600080fd5b810190602081018135600160201b8111156106f757600080fd5b82018360208201111561070957600080fd5b803590602001918460208302840111600160201b8311171561072a57600080fd5b9193509150356119d3565b34801561074157600080fd5b506105db611ad6565b34801561075657600080fd5b506104376004803603602081101561076d57600080fd5b50356001600160a01b0316611ae5565b34801561078957600080fd5b506105b4611bc8565b34801561079e57600080fd5b506107a7611c3e565b6040805160ff9092168252519081900360200190f35b3480156107c957600080fd5b506105b4600480360360208110156107e057600080fd5b50356001600160a01b0316611c43565b3480156107fc57600080fd5b506105376004803603604081101561081357600080fd5b506001600160a01b038135169060200135611c55565b34801561083557600080fd5b506105b4611ca3565b34801561084a57600080fd5b506104376004803603604081101561086157600080fd5b506001600160a01b038135169060200135611ca9565b34801561088357600080fd5b506105b4611d0b565b34801561089857600080fd5b50610537600480360360208110156108af57600080fd5b50356001600160a01b0316611d11565b3480156108cb57600080fd5b50610437600480360360408110156108e257600080fd5b506001600160a01b0381351690602001351515611d26565b34801561090657600080fd5b506105db611e80565b34801561091b57600080fd5b50610537611e8f565b34801561093057600080fd5b50610437611e9f565b34801561094557600080fd5b506105376004803603602081101561095c57600080fd5b50356001600160a01b0316611f20565b34801561097857600080fd5b506104376004803603602081101561098f57600080fd5b50356001600160a01b0316611f42565b3480156109ab57600080fd5b50610537611fbc565b3480156109c057600080fd5b50610537611fcb565b3480156109d557600080fd5b50610537611fdb565b3480156109ea57600080fd5b5061043760048036036020811015610a0157600080fd5b5035611feb565b348015610a1457600080fd5b506105b461209c565b348015610a2957600080fd5b5061043760048036036020811015610a4057600080fd5b50356001600160a01b03166120e1565b348015610a5c57600080fd5b5061043760048036036040811015610a7357600080fd5b810190602081018135600160201b811115610a8d57600080fd5b820183602082011115610a9f57600080fd5b803590602001918460208302840111600160201b83111715610ac057600080fd5b919390929091602081019035600160201b811115610add57600080fd5b820183602082011115610aef57600080fd5b803590602001918460208302840111600160201b83111715610b1057600080fd5b509092509050612491565b348015610b2757600080fd5b506105b460048036036020811015610b3e57600080fd5b50356001600160a01b03166125a4565b348015610b5a57600080fd5b50610537612627565b348015610b6f57600080fd5b506105b460048036036020811015610b8657600080fd5b50356001600160a01b0316612630565b348015610ba257600080fd5b5061043761264b565b348015610bb757600080fd5b5061043760048036036020811015610bce57600080fd5b503515156126db565b348015610be357600080fd5b506105376127a1565b348015610bf857600080fd5b506105376127b1565b348015610c0d57600080fd5b506105376127c1565b348015610c2257600080fd5b5061043760048036036040811015610c3957600080fd5b506001600160a01b03813516906020013515156127d1565b348015610c5d57600080fd5b5061043760048036036020811015610c7457600080fd5b50356001600160a01b031661293f565b348015610c9057600080fd5b5061043760048036036020811015610ca757600080fd5b50356001600160a01b0316612a04565b348015610cc357600080fd5b506105b4612d62565b348015610cd857600080fd5b5061043760048036036020811015610cef57600080fd5b5035612d68565b348015610d0257600080fd5b506105db612e19565b348015610d1757600080fd5b5061043760048036036020811015610d2e57600080fd5b5035612e28565b348015610d4157600080fd5b50610489612ec2565b348015610d5657600080fd5b5061043760048036036020811015610d6d57600080fd5b50351515612f23565b348015610d8257600080fd5b506105b4612f99565b348015610d9757600080fd5b5061043760048036036040811015610dae57600080fd5b506001600160a01b0381351690602001351515612f9f565b348015610dd257600080fd5b506105b460048036036020811015610de957600080fd5b50356001600160a01b031661304e565b348015610e0557600080fd5b506104376132bc565b348015610e1a57600080fd5b5061043761332a565b348015610e2f57600080fd5b506105b46134a7565b348015610e4457600080fd5b5061053760048036036040811015610e5b57600080fd5b506001600160a01b0381351690602001356134ec565b348015610e7d57600080fd5b506105b4613554565b348015610e9257600080fd5b5061053761355a565b348015610ea757600080fd5b506105b460048036036020811015610ebe57600080fd5b50356001600160a01b031661356a565b348015610eda57600080fd5b5061053760048036036040811015610ef157600080fd5b506001600160a01b0381351690602001356135bb565b348015610f1357600080fd5b5061053760048036036020811015610f2a57600080fd5b50356001600160a01b03166135cf565b348015610f4657600080fd5b50610f6d60048036036020811015610f5d57600080fd5b50356001600160a01b03166135e4565b604080516001600160a01b0390971687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b348015610fb657600080fd5b506105db613696565b348015610fcb57600080fd5b5061043760048036036020811015610fe257600080fd5b503515156136a5565b348015610ff757600080fd5b506105376004803603602081101561100e57600080fd5b50356001600160a01b031661376b565b34801561102a57600080fd5b506104376004803603604081101561104157600080fd5b506001600160a01b0381351690602001351515613780565b34801561106557600080fd5b506104376004803603606081101561107c57600080fd5b50803590602081013590604001356138a9565b34801561109b57600080fd5b506105b461397e565b3480156110b057600080fd5b50610437600480360360208110156110c757600080fd5b50356001600160a01b0316613984565b3480156110e357600080fd5b506105b4613a43565b3480156110f857600080fd5b506104376004803603604081101561110f57600080fd5b50803590602001351515613a49565b34801561112a57600080fd5b506105b46004803603604081101561114157600080fd5b506001600160a01b0381358116916020013516613b23565b34801561116557600080fd5b506105db613b4e565b34801561117a57600080fd5b506104376004803603602081101561119157600080fd5b50351515613b5d565b3480156111a657600080fd5b506105b4613bc8565b3480156111bb57600080fd5b506105b4613bce565b3480156111d057600080fd5b506105b4613bd4565b3480156111e557600080fd5b506105b4613bda565b3480156111fa57600080fd5b506104376004803603602081101561121157600080fd5b5035613c1f565b34801561122457600080fd5b50610537613cc4565b34801561123957600080fd5b506104376004803603602081101561125057600080fd5b50356001600160a01b0316613cd2565b34801561126c57600080fd5b506104376004803603602081101561128357600080fd5b50351515613d91565b34801561129857600080fd5b50610437600480360360208110156112af57600080fd5b50356001600160a01b0316613e07565b3480156112cb57600080fd5b50610437600480360360208110156112e257600080fd5b50351515613eee565b3480156112f757600080fd5b506105376004803603602081101561130e57600080fd5b50356001600160a01b0316613f60565b611326613fd4565b6005546001600160a01b03908116911614611376576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60205460ff600160501b90910416151581151514156113c65760405162461bcd60e51b815260040180806020018281038252602d815260200180615bef602d913960400191505060405180910390fd5b60208054911515600160501b0260ff60501b19909216919091179055565b6113ec613fd4565b6005546001600160a01b0390811691161461143c576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60085460408051634e7b827f60e01b81526001600160a01b03858116600483015291519190921691634e7b827f916024808301926020929190829003018186803b15801561148957600080fd5b505afa15801561149d573d6000803e3d6000fd5b505050506040513d60208110156114b357600080fd5b505115611507576040805162461bcd60e51b815260206004820152601f60248201527f416c7265616479206578636c756465642066726f6d206469766964656e647300604482015290519081900360640190fd5b6008546040805162241fbd60e51b81526001600160a01b038581166004830152841515602483015291519190921691630483f7a091604480830192600092919082900301818387803b15801561155c57600080fd5b505af1158015611570573d6000803e3d6000fd5b505050505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b5050505050905090565b600061162261161b613fd4565b8484613fd8565b5060015b92915050565b611634613fd4565b6005546001600160a01b03908116911614611684576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60175461169982670de0b6b3a76400006140c4565b601781905560408051838152602081019290925280517f47e32629af1fc3c60a5654749bbbe503cf7b16ccb001804be0740e01ea50ba159281900390910190a15050565b6116e5613fd4565b6005546001600160a01b03908116911614611735576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6005546006546040516001600160a01b039283169290911690600080516020615d7b83398151915290600090a3600554600680546001600160a01b0319166001600160a01b03909216919091179055565b602054600160201b900460ff1681565b60195481565b6007546001600160a01b031681565b6117b3613fd4565b6005546001600160a01b03908116911614611803576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60208054911515620100000262ff000019909216919091179055565b60025490565b61182d613fd4565b6005546001600160a01b0390811691161461187d576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60085460408051631fa71a3b60e01b81526004810184905290516001600160a01b0390921691631fa71a3b9160248082019260009290919082900301818387803b1580156118ca57600080fd5b505af11580156118de573d6000803e3d6000fd5b5050505050565b60006118f284848461411d565b611962846118fe613fd4565b61195d85604051806060016040528060288152602001615d33602891396001600160a01b038a1660009081526001602052604081209061193c613fd4565b6001600160a01b0316815260208101919091526040016000205491906147ad565b613fd8565b5060019392505050565b611974613fd4565b6005546001600160a01b039081169116146119c4576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6020805460ff60281b19169055565b6119db613fd4565b6005546001600160a01b03908116911614611a2b576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b600080611a4083670de0b6b3a76400006140c4565b90505b838210156118de576000858584818110611a5957fe5b905060200201356001600160a01b03169050611a7633828461411d565b6001600160a01b038116600090815260106020526040902054611a999083613f75565b6001600160a01b03909116600090815260106020908152604080832093909355600f905220805460ff191660019081179091559190910190611a43565b6008546001600160a01b031681565b611aed613fd4565b6006546001600160a01b03908116911614611b395760405162461bcd60e51b8152600401808060200182810382526024815260200180615b256024913960400191505060405180910390fd5b6001600160a01b038116611b7e5760405162461bcd60e51b8152600401808060200182810382526026815260200180615b496026913960400191505060405180910390fd5b6006546040516001600160a01b03808416921690600080516020615d7b83398151915290600090a3600680546001600160a01b0319166001600160a01b0392909216919091179055565b600854604080516342d359d760e11b815290516000926001600160a01b0316916385a6b3ae916004808301926020929190829003018186803b158015611c0d57600080fd5b505afa158015611c21573d6000803e3d6000fd5b505050506040513d6020811015611c3757600080fd5b5051905090565b601290565b60106020526000908152604090205481565b6000611622611c62613fd4565b8461195d8560016000611c73613fd4565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490613f75565b601d5481565b611cb1613fd4565b6006546001600160a01b03908116911614611cfd5760405162461bcd60e51b8152600401808060200182810382526024815260200180615b256024913960400191505060405180910390fd5b611d078282614844565b5050565b601a5481565b600c6020526000908152604090205460ff1681565b611d2e613fd4565b6005546001600160a01b03908116911614611d7e576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b8015611e55576001600160a01b0382166000908152600e602052604090205460ff1615611de8576040805162461bcd60e51b8152602060048201526013602482015272105b1c9958591e48189b1858dadb1a5cdd1959606a1b604482015290519081900360640190fd5b6008546040805162241fbd60e51b81526001600160a01b0385811660048301526001602483015291519190921691630483f7a091604480830192600092919082900301818387803b158015611e3c57600080fd5b505af1158015611e50573d6000803e3d6000fd5b505050505b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6009546001600160a01b031681565b6020546301000000900460ff1681565b6008546040805163bc4c4b3760e01b815233600482015260006024820181905291516001600160a01b039093169263bc4c4b3792604480840193602093929083900390910190829087803b158015611ef657600080fd5b505af1158015611f0a573d6000803e3d6000fd5b505050506040513d6020811015611d0757600080fd5b6001600160a01b0381166000908152600d602052604090205460ff165b919050565b611f4a613fd4565b6005546001600160a01b03908116911614611f9a576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b600a80546001600160a01b0319166001600160a01b0392909216919091179055565b60205462010000900460ff1681565b602054600160481b900460ff1681565b602054600160401b900460ff1681565b611ff3613fd4565b6005546001600160a01b03908116911614612043576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60185461205882670de0b6b3a76400006140c4565b601881905560408051838152602081019290925280517fab0ec7468909bac916971a36711bb7a453201e59940de1fb0be6acc303854ffd9281900390910190a15050565b600854604080516304ddf6ef60e11b815290516000926001600160a01b0316916309bbedde916004808301926020929190829003018186803b158015611c0d57600080fd5b6120e9613fd4565b6005546001600160a01b03908116911614612139576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6007546001600160a01b03828116911614156121865760405162461bcd60e51b8152600401808060200182810382526023815260200180615c566023913960400191505060405180910390fd5b6001600160a01b0381166121cb5760405162461bcd60e51b8152600401808060200182810382526025815260200180615dbe6025913960400191505060405180910390fd5b6007546040516001600160a01b03918216918316907f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e90600090a3600780546001600160a01b039081166000908152600c60209081526040808320805460ff1990811690915560095485168452600b83528184208054909116905584546001600160a01b0319168685161794859055805163c45a015560e01b8152905192949093169263c45a01559260048083019392829003018186803b15801561228f57600080fd5b505afa1580156122a3573d6000803e3d6000fd5b505050506040513d60208110156122b957600080fd5b5051600a546040805163e6a4390560e01b81523060048201526001600160a01b0392831660248201529051919092169163e6a43905916044808301926020929190829003018186803b15801561230e57600080fd5b505afa158015612322573d6000803e3d6000fd5b505050506040513d602081101561233857600080fd5b505190506001600160a01b03811661244857600760009054906101000a90046001600160a01b03166001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561239857600080fd5b505afa1580156123ac573d6000803e3d6000fd5b505050506040513d60208110156123c257600080fd5b5051600a54604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b15801561241957600080fd5b505af115801561242d573d6000803e3d6000fd5b505050506040513d602081101561244357600080fd5b505190505b6001600160a01b038281166000908152600c602052604090208054600160ff199091168117909155600980546001600160a01b0319168484161790819055611d07921690614916565b612499613fd4565b6005546001600160a01b039081169116146124e9576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b828114612539576040805162461bcd60e51b8152602060048201526019602482015278105c9c985e481cda5e995cc81b5d5cdd08189948195c5d585b603a1b604482015290519081900360640190fd5b60005b838110156118de576000612573670de0b6b3a764000085858581811061255e57fe5b905060200201356140c490919063ffffffff16565b905061259b3387878581811061258557fe5b905060200201356001600160a01b03168361411d565b5060010161253c565b600854604080516370a0823160e01b81526001600160a01b038481166004830152915160009392909216916370a0823191602480820192602092909190829003018186803b1580156125f557600080fd5b505afa158015612609573d6000803e3d6000fd5b505050506040513d602081101561261f57600080fd5b505192915050565b60205460ff1681565b6001600160a01b031660009081526020819052604090205490565b612653613fd4565b6005546001600160a01b039081169116146126a3576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6005546040516000916001600160a01b031690600080516020615d7b833981519152908390a3600580546001600160a01b0319169055565b6126e3613fd4565b6005546001600160a01b03908116911614612733576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60205460ff600160481b90910416151581151514156127835760405162461bcd60e51b8152600401808060200182810382526028815260200180615cb26028913960400191505060405180910390fd5b60208054911515600160481b0260ff60481b19909216919091179055565b602054600160381b900460ff1681565b602054600160301b900460ff1681565b602054600160281b900460ff1681565b6127d9613fd4565b6005546001600160a01b03908116911614612829576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6007546001600160a01b03838116911614156128765760405162461bcd60e51b8152600401808060200182810382526039815260200180615c796039913960400191505060405180910390fd5b6001600160a01b0382166000908152600c602052604090205460ff16151581151514156128d45760405162461bcd60e51b815260040180806020018281038252603a815260200180615c1c603a913960400191505060405180910390fd5b6001600160a01b038281166000818152600c6020526040808220805460ff1916861515179055600854815162241fbd60e51b81526004810194909452602484018390529051931692630483f7a092604480820193929182900301818387803b15801561155c57600080fd5b612947613fd4565b6005546001600160a01b03908116911614612997576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b0381166129dc5760405162461bcd60e51b8152600401808060200182810382526023815260200180615a8c6023913960400191505060405180910390fd5b602080546001600160a01b03909216600160601b026001600160601b03909216919091179055565b612a0c613fd4565b6005546001600160a01b03908116911614612a5c576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6008546001600160a01b0382811691161415612aa95760405162461bcd60e51b815260040180806020018281038252602d815260200180615eec602d913960400191505060405180910390fd5b6040805163064591a760e11b8152306004820152905182916001600160a01b03831691630c8b234e91602480820192602092909190829003018186803b158015612af257600080fd5b505afa158015612b06573d6000803e3d6000fd5b505050506040513d6020811015612b1c57600080fd5b5051612b595760405162461bcd60e51b8152600401808060200182810382526038815260200180615cda6038913960400191505060405180910390fd5b6040805162241fbd60e51b81526001600160a01b0383166004820181905260006024830181905292519092630483f7a0926044808201939182900301818387803b158015612ba657600080fd5b505af1158015612bba573d6000803e3d6000fd5b50506040805162241fbd60e51b815230600482015260006024820181905291516001600160a01b0386169450630483f7a093506044808301939282900301818387803b158015612c0957600080fd5b505af1158015612c1d573d6000803e3d6000fd5b50505050806001600160a01b0316630483f7a0612c38612e19565b60006040518363ffffffff1660e01b815260040180836001600160a01b03168152602001821515815260200192505050600060405180830381600087803b158015612c8257600080fd5b505af1158015612c96573d6000803e3d6000fd5b50506007546040805162241fbd60e51b81526001600160a01b03928316600482015260006024820181905291519286169450630483f7a093506044808201939182900301818387803b158015612ceb57600080fd5b505af1158015612cff573d6000803e3d6000fd5b50506008546040516001600160a01b03918216935090851691507f90c7d74461c613da5efa97d90740869367d74ab3aa5837aa4ae9a975f954b7a890600090a3600880546001600160a01b0319166001600160a01b039290921691909117905550565b601f5481565b612d70613fd4565b6005546001600160a01b03908116911614612dc0576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b601d54612dd582670de0b6b3a76400006140c4565b601d81905560408051838152602081019290925280517f0273e0904ccd5aa39aadf810a8d0fc96671a08ba577fe49feab57fa1b6aad8309281900390910190a15050565b6005546001600160a01b031690565b612e30613fd4565b6005546001600160a01b03908116911614612e80576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b601f54604080519182526020820183905280517f8c77526a6c0a7aa7cec23fef2dbb5958248deca84a91f836bd9e04a2aea4e6db9281900390910190a1601f55565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156116045780601f106115d957610100808354040283529160200191611604565b612f2b613fd4565b6005546001600160a01b03908116911614612f7b576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6020805491151563010000000263ff00000019909216919091179055565b60165481565b612fa7613fd4565b6005546001600160a01b03908116911614612ff7576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6009546001600160a01b03838116911614156130445760405162461bcd60e51b8152600401808060200182810382526035815260200180615e036035913960400191505060405180910390fd5b611d078282614916565b6001600160a01b0381166000908152600e602052604081205460ff16156130b2576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b602054600160481b900460ff1680156130e957506001600160a01b0382166000908152601260205260409020544262015180909101115b156130f657506000611f3d565b6130ff82612630565b90506000613118601a5442614a4890919063ffffffff16565b90506301dfe20081118061314557506001600160a01b0383166000908152600f602052604090205460ff16155b6131e95760006131558483614a8a565b9050601d548111613166578061316a565b601d545b6001600160a01b0385166000908152601060205260409020549091506131909082614a48565b61319985612630565b11156131dc576001600160a01b0384166000908152601060205260409020546131d5906131c69083614a48565b6131cf86612630565b90614a48565b92506131e7565b600092505050611f3d565b505b602054600160501b900460ff16801561322057506001600160a01b0383166000908152601260205260409020544262015180909101115b1561328d576001600160a01b038316600090815260136020526040812054601f54101561324e576000613273565b6001600160a01b038416600090815260136020526040902054601f5461327391614a48565b9050808311156132835780613285565b825b9250506132b6565b602054600160501b900460ff16156132b657601f548211156132b157601f546132b3565b815b91505b50919050565b6132c4613fd4565b6005546001600160a01b03908116911614613314576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b42601a5543601b556020805462ff000019169055565b613332613fd4565b6005546001600160a01b03908116911614613382576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6007546040805163c45a015560e01b815290516000926001600160a01b03169163c45a0155916004808301926020929190829003018186803b1580156133c757600080fd5b505afa1580156133db573d6000803e3d6000fd5b505050506040513d60208110156133f157600080fd5b5051600a54604080516364e329cb60e11b81523060048201526001600160a01b0392831660248201529051919092169163c9c653969160448083019260209291908290030181600087803b15801561344857600080fd5b505af115801561345c573d6000803e3d6000fd5b505050506040513d602081101561347257600080fd5b5051600980546001600160a01b0319166001600160a01b0380841691909117918290559192506134a491166001614916565b50565b60085460408051631bc9e27b60e21b815290516000926001600160a01b031691636f2789ec916004808301926020929190829003018186803b158015611c0d57600080fd5b60006116226134f9613fd4565b8461195d85604051806060016040528060258152602001615ec76025913960016000613523613fd4565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906147ad565b60145481565b602054600160501b900460ff1681565b600854604080516302a2e74960e61b81526001600160a01b0384811660048301529151600093929092169163a8b9d24091602480820192602092909190829003018186803b1580156125f557600080fd5b60006116226135c8613fd4565b848461411d565b600f6020526000908152604090205460ff1681565b6008546040805163fbcbc0f160e01b81526001600160a01b038481166004830152915160009384938493849384938493169163fbcbc0f19160248083019260c0929190829003018186803b15801561363b57600080fd5b505afa15801561364f573d6000803e3d6000fd5b505050506040513d60c081101561366557600080fd5b508051602082015160408301516060840151608085015160a090950151939c929b5090995097509195509350915050565b600a546001600160a01b031681565b6136ad613fd4565b6005546001600160a01b039081169116146136fd576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60205460ff600160401b909104161515811515141561374d5760405162461bcd60e51b8152600401808060200182810382526023815260200180615d9b6023913960400191505060405180910390fd5b60208054911515600160401b0260ff60401b19909216919091179055565b600b6020526000908152604090205460ff1681565b613788613fd4565b6005546001600160a01b039081169116146137d8576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600d602052604090205460ff1615158115151415613849576040805162461bcd60e51b815260206004820152601a6024820152794163636f756e7420616c726561647920276578636c756465642760301b604482015290519081900360640190fd5b6001600160a01b0382166000818152600d6020908152604091829020805460ff1916851515908117909155825190815291517f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df79281900390910190a25050565b6138b1613fd4565b6005546001600160a01b03908116911614613901576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6014839055601682905560158190556139248161391e8585613f75565b90613f75565b601981905560145460165460155460408051938452602084019290925282820152606082019290925290517f7027e29faa2460f22e800d92db38d4795b668c7104da6b87afaeaf502a269ca59181900360800190a1505050565b601e5481565b61398c613fd4565b6005546001600160a01b039081169116146139dc576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b038116613a215760405162461bcd60e51b8152600401808060200182810382526023815260200180615ea46023913960400191505060405180910390fd5b602180546001600160a01b0319166001600160a01b0392909216919091179055565b60155481565b613a51613fd4565b6005546001600160a01b03908116911614613aa1576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b601c54613ab683670de0b6b3a76400006140c4565b601c81905560208054841515600160201b90810260ff60201b199092169190911780835560408051868152938401949094520460ff1615158183015290517fd6d1ec2dffd2df16cb6d0859837b49920203bb429cc368ce9eab6df4d60e94399181900360600190a1505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031690565b613b65613fd4565b6005546001600160a01b03908116911614613bb5576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6020805460ff1916911515919091179055565b60185481565b601b5481565b601c5481565b60085460408051632f842d8560e21b815290516000926001600160a01b03169163be10b614916004808301926020929190829003018186803b158015611c0d57600080fd5b613c27613fd4565b6005546001600160a01b03908116911614613c77576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6008546040805163e98030c760e01b81526004810184905290516001600160a01b039092169163e98030c79160248082019260009290919082900301818387803b1580156118ca57600080fd5b602054610100900460ff1681565b613cda613fd4565b6005546001600160a01b03908116911614613d2a576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b038116613d6f5760405162461bcd60e51b8152600401808060200182810382526023815260200180615e816023913960400191505060405180910390fd5b602280546001600160a01b0319166001600160a01b0392909216919091179055565b613d99613fd4565b6005546001600160a01b03908116911614613de9576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b60208054911515600160381b0260ff60381b19909216919091179055565b613e0f613fd4565b6005546001600160a01b03908116911614613e5f576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b6001600160a01b038116613ea45760405162461bcd60e51b8152600401808060200182810382526026815260200180615b496026913960400191505060405180910390fd5b6005546040516001600160a01b03808416921690600080516020615d7b83398151915290600090a3600580546001600160a01b0319166001600160a01b0392909216919091179055565b613ef6613fd4565b6005546001600160a01b03908116911614613f46576040805162461bcd60e51b81526020600482018190526024820152600080516020615d5b833981519152604482015290519081900360640190fd5b602080549115156101000261ff0019909216919091179055565b600e6020526000908152604090205460ff1681565b600082820183811015613fcd576040805162461bcd60e51b815260206004820152601b60248201527a536166654d6174683a206164646974696f6e206f766572666c6f7760281b604482015290519081900360640190fd5b9392505050565b3390565b6001600160a01b03831661401d5760405162461bcd60e51b8152600401808060200182810382526024815260200180615e5d6024913960400191505060405180910390fd5b6001600160a01b0382166140625760405162461bcd60e51b8152600401808060200182810382526022815260200180615b6f6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6000826140d357506000611626565b828202828482816140e057fe5b0414613fcd5760405162461bcd60e51b8152600401808060200182810382526021815260200180615d126021913960400191505060405180910390fd5b6001600160a01b0383166141625760405162461bcd60e51b8152600401808060200182810382526025815260200180615e386025913960400191505060405180910390fd5b6001600160a01b0382166141a75760405162461bcd60e51b8152600401808060200182810382526023815260200180615aaf6023913960400191505060405180910390fd5b6001600160a01b0383166000908152600e602052604090205460ff161580156141e957506001600160a01b0382166000908152600e602052604090205460ff16155b80156142055750326000908152600e602052604090205460ff16155b61424c576040805162461bcd60e51b8152602060048201526013602482015272426c61636b6c6973746564206164647265737360681b604482015290519081900360640190fd5b614254612e19565b6001600160a01b0316836001600160a01b0316146142bb5760205462010000900460ff16156142bb576040805162461bcd60e51b815260206004820152600e60248201526d1d1c98591a5b99c81c185d5cd95960921b604482015290519081900360640190fd5b6142c3612e19565b6001600160a01b0316836001600160a01b0316141580156142fd57506142e7612e19565b6001600160a01b0316826001600160a01b031614155b1561430d5761430d838383614c57565b326000908152600e602052604090205460ff161561432a576147a8565b600061433584612630565b9050600061434e601a5442614a4890919063ffffffff16565b90506301dfe2008111156143a3576001600160a01b0385166000908152600f602052604090205460ff161561439e576001600160a01b0385166000908152600f60205260409020805460ff191690555b614478565b60006143af8683614a8a565b6001600160a01b0386166000908152600b602052604090205490915060ff16806143f157506001600160a01b0385166000908152600c602052604090205460ff165b1561440c57601d5481116144055780614409565b601d545b90505b6001600160a01b03861660009081526010602052604090205461442f9082614a48565b6144398486614a48565b10156144765760405162461bcd60e51b8152600401808060200182810382526032815260200180615ad26032913960400191505060405180910390fd5b505b82614490576144898585600061549c565b50506147a8565b600061449b30612630565b6018546020549192508210159060ff1680156144c15750602054600160581b900460ff16155b80156144e657506001600160a01b0387166000908152600b602052604090205460ff16155b80156144ef5750805b1561451e576020805460ff60581b1916600160581b179055614510826155da565b6020805460ff60581b191690555b602080546001600160a01b0389166000908152600d90925260409091205460ff600160581b90920482161591168061456e57506001600160a01b0387166000908152600d602052604090205460ff165b806145835750602054600160401b900460ff16155b1561458c575060005b80156146b15760006145b460646145ae6019548a6140c490919063ffffffff16565b90615752565b90506145be612e19565b6001600160a01b0316896001600160a01b0316141580156145e857506001600160a01b0389163014155b801561467657506001600160a01b0389166000908152600b602052604090205460ff168061462e57506001600160a01b0388166000908152600b602052604090205460ff165b8061465157506001600160a01b0389166000908152600c602052604090205460ff165b8061467457506001600160a01b0388166000908152600c602052604090205460ff165b155b156146985761469560646145ae601e548a6140c490919063ffffffff16565b90505b6146a28782614a48565b96506146af89308361549c565b505b6146bc88888861549c565b6008546001600160a01b031663e30443bc896146d781612630565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561471d57600080fd5b505af192505050801561472e575060015b506008546001600160a01b031663e30443bc8861474a81612630565b6040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b15801561479057600080fd5b505af19250505080156147a1575060015b5050505050505b505050565b6000818484111561483c5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156148015781810151838201526020016147e9565b50505050905090810190601f16801561482e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b03821661489f576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6002546148ac9082613f75565b6002556001600160a01b0382166000908152602081905260409020546148d29082613f75565b6001600160a01b038316600081815260208181526040808320949094558351858152935192939192600080516020615de38339815191529281900390910190a35050565b6001600160a01b0382166000908152600b602052604090205460ff16151581151514156149745760405162461bcd60e51b8152600401808060200182810382526038815260200180615b916038913960400191505060405180910390fd5b6001600160a01b0382166000908152600b60205260409020805460ff19168215801591909117909155614a0c576008546040805162241fbd60e51b81526001600160a01b0385811660048301526000602483018190529251931692630483f7a09260448084019391929182900301818387803b1580156149f357600080fd5b505af1158015614a07573d6000803e3d6000fd5b505050505b604051811515906001600160a01b038416907fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab90600090a35050565b6000613fcd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506147ad565b6001600160a01b0382166000908152600f602052604081205460ff1615611626576001600160a01b03831660009081526010602052604090205462015180831015614ad85760009150614c50565b6224ea00831015614afa57614af3600a6145ae8360026140c4565b9150614c50565b6249d400831015614b1557614af360646145ae8360196140c4565b626ebe00831015614b3057614af360646145ae83601e6140c4565b6293a800831015614b4b57614af360646145ae8360236140c4565b62b89200831015614b6657614af360646145ae8360186140c4565b62dd7c00831015614b8157614af360646145ae83602d6140c4565b6301026600831015614b9857614af3816002615752565b6301275000831015614bb457614af360646145ae8360386140c4565b63014c3a00831015614bd057614af360646145ae83603e6140c4565b6301712400831015614bec57614af360646145ae8360446140c4565b6301960e00831015614c0857614af360646145ae83604c6140c4565b6301baf800831015614c2457614af360646145ae8360546140c4565b6301dfe200831015614c4057614af360646145ae83605c6140c4565b6301dfe200831115614c50578091505b5092915050565b602054600160481b900460ff168015614c8857506001600160a01b0382166000908152600b602052604090205460ff165b15614d11574260126000614c9a613fd4565b6001600160a01b03166001600160a01b031681526020019081526020016000205462015180011115614d11576040805162461bcd60e51b815260206004820152601b60248201527a13db99481cd95b1b081c195c8819185e481a5cc8185b1b1bddd959602a1b604482015290519081900360640190fd5b6001600160a01b0382166000908152600b602052604090205460ff1615614dec574260126000614d3f613fd4565b6001600160a01b03166001600160a01b0316815260200190815260200160002054620151800110614d9c578060136000614d77613fd4565b6001600160a01b03168152602081019190915260400160002080549091019055614dc4565b8060136000614da9613fd4565b6001600160a01b031681526020810191909152604001600020555b4260126000614dd1613fd4565b6001600160a01b031681526020810191909152604001600020555b602054600160501b900460ff1615614e6b57601f5460136000614e0d613fd4565b6001600160a01b03166001600160a01b03168152602001908152602001600020541115614e6b5760405162461bcd60e51b8152600401808060200182810382526021815260200180615b046021913960400191505060405180910390fd5b6020546301000000900460ff1615614edc576001600160a01b0383163014614edc57601754811115614edc576040805162461bcd60e51b8152602060048201526015602482015274195e18d959591cc81b585e081d1e08185b5bdd5b9d605a1b604482015290519081900360640190fd5b602054600160301b900460ff1615615000576001600160a01b0383163014801590614f1057506001600160a01b0382163014155b8015614f3557506001600160a01b0382166000908152600c602052604090205460ff16155b8015614f5a57506001600160a01b0382166000908152600b602052604090205460ff16155b156150005760116000614f6b613fd4565b6001600160a01b03166001600160a01b0316815260200190815260200160002054601e01421015614fd8576040805162461bcd60e51b815260206004820152601260248201527110dbdbdb191bdddb881a5b881959999958dd60721b604482015290519081900360640190fd5b4260116000614fe5613fd4565b6001600160a01b031681526020810191909152604001600020555b602054600160281b900460ff1615615314576001600160a01b0383166000908152600b602052604090205460ff16801561505357506001600160a01b0382166000908152600c602052604090205460ff16155b801561506857506001600160a01b0382163014155b801561507d57506001600160a01b0383163014155b1561509757326001600160a01b0383161461509757600080fd5b601b54600401431161531457326000818152600e60205260409020805460ff191660011790556001600160a01b038416148015906150de5750326001600160a01b03831614155b1561514e576008546040805162241fbd60e51b81523260048201526001602482015290516001600160a01b0390921691630483f7a09160448082019260009290919082900301818387803b15801561513557600080fd5b505af1158015615149573d6000803e3d6000fd5b505050505b6001600160a01b0383166000908152600b602052604090205460ff1615801561519057506001600160a01b0383166000908152600c602052604090205460ff16155b80156151a557506001600160a01b0383163014155b15615231576001600160a01b038084166000818152600e6020526040808220805460ff19166001908117909155600854825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b15801561521857600080fd5b505af115801561522c573d6000803e3d6000fd5b505050505b6001600160a01b0382166000908152600b602052604090205460ff1615801561527357506001600160a01b0382166000908152600c602052604090205460ff16155b801561528857506001600160a01b0382163014155b15615314576001600160a01b038083166000818152600e6020526040808220805460ff19166001908117909155600854825162241fbd60e51b8152600481019590955260248501919091529051931692630483f7a092604480820193929182900301818387803b1580156152fb57600080fd5b505af115801561530f573d6000803e3d6000fd5b505050505b602054600160201b900460ff161561539e576001600160a01b0383166000908152600b602052604090205460ff16801561535c57506007546001600160a01b03838116911614155b801561537157506001600160a01b0382163014155b1561539e57600061538183612630565b601c549091506153918284613f75565b111561539c57600080fd5b505b602054600160381b900460ff16156147a8576001600160a01b03831630148015906153d257506001600160a01b0382163014155b156147a8576001600160a01b0383166000908152600b602052604090205460ff168061541657506001600160a01b0382166000908152600b602052604090205460ff165b8061543957506001600160a01b0383166000908152600c602052604090205460ff165b8061545c57506001600160a01b0382166000908152600c602052604090205460ff165b6147a8576040805162461bcd60e51b815260206004820152600c60248201526b4e6f207472616e736665727360a01b604482015290519081900360640190fd5b6001600160a01b0383166154e15760405162461bcd60e51b8152600401808060200182810382526025815260200180615e386025913960400191505060405180910390fd5b6001600160a01b0382166155265760405162461bcd60e51b8152600401808060200182810382526023815260200180615aaf6023913960400191505060405180910390fd5b61556381604051806060016040528060268152602001615bc9602691396001600160a01b03861660009081526020819052604090205491906147ad565b6001600160a01b0380851660009081526020819052604080822093909355908416815220546155929082613f75565b6001600160a01b03808416600081815260208181526040918290209490945580518581529051919392871692600080516020615de383398151915292918290030190a3505050565b60006155f76019546145ae601654856140c490919063ffffffff16565b90506000615606826002615752565b905060006156148483614a48565b90504761562082615791565b600061562c4783614a48565b9050600061565060026145ae6019546145ae601654876140c490919063ffffffff16565b9050600061567460036145ae6019546145ae601554886140c490919063ffffffff16565b602054604051919250600160601b90046001600160a01b0316906108fc8315029083906000818181858888f193505050501580156156b6573d6000803e3d6000fd5b506021546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156156f1573d6000803e3d6000fd5b506022546040516001600160a01b039091169082156108fc029083906000818181858888f1935050505015801561572c573d6000803e3d6000fd5b5061573786836158c0565b6020544790610100900460ff16156147a1576147a181615993565b6000613fcd83836040518060400160405280601a815260200179536166654d6174683a206469766973696f6e206279207a65726f60301b815250615a26565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106157c057fe5b6001600160a01b039283166020918202929092010152600a548251911690829060019081106157eb57fe5b6001600160a01b0392831660209182029290920101526007546158119130911684613fd8565b60075460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b8381101561589757818101518382015260200161587f565b505050509050019650505050505050600060405180830381600087803b15801561155c57600080fd5b6007546158d89030906001600160a01b031684613fd8565b6007546001600160a01b031663f305d7198230856000806158f7612e19565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b15801561596257600080fd5b505af1158015615976573d6000803e3d6000fd5b50505050506040513d606081101561598d57600080fd5b50505050565b6008546040516000916001600160a01b03169083908381818185875af1925050503d80600081146159e0576040519150601f19603f3d011682016040523d82523d6000602084013e6159e5565b606091505b505090508015611d07576040805183815290517fb0cc2628d6d644cf6be9d8110e142297ac910d6d8026d795a99f272fd9ad60b19181900360200190a15050565b60008183615a755760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156148015781810151838201526020016147e9565b506000838581615a8157fe5b049594505050505056fe412077616c6c65742073686f756c64206e6f742062652061646472657373207a65726f45524332303a207472616e7366657220746f20746865207a65726f206164647265737343616e277420627970617373207665737420616e642063616e2774206279706173732076657374656453656c6c4c696d69744d6178206461696c792073656c6c20616d6f756e742077617320726561636865644f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726d696e744f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734175746f6d61746564206d61726b6574206d616b6572207061697220697320616c72656164792073657420746f20746861742076616c756545524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e63655570646174696e6720746f2063757272656e742076616c75652c20656e61626c654d61784461696c7953656c6c4175746f6d61746564206d61726b6574206d616b657220726f7574657220697320616c72656164792073657420746f20746861742076616c756554686520726f7574657220616c72656164792068617320746861742061646472657373526f757465722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572526f75746572735570646174696e6720746f2063757272656e742076616c75652c206461696c79436f6f6c446f776e546865206e6577206469766964656e6420747261636b6572206d757374206265206f776e656420627920746f6b656e20636f6e7472616374536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05570646174696e6720746f2063757272656e742076616c75652c2074616b65466565734e657720726f757465722073686f756c64206e6f742062652061646472657373207a65726fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef506169722063616e6e6f742062652072656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b6572506169727345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f2061646472657373432077616c6c65742073686f756c64206e6f742062652061646472657373207a65726f422077616c6c65742073686f756c64206e6f742062652061646472657373207a65726f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f546865206469766964656e6420747261636b657220616c72656164792068617320746861742061646472657373a26469706673582212200af6e3e41b822daf2089a6a80cc8612e1de33fcd4c58631fcf90f0feda6b871864736f6c63430007060033
Deployed Bytecode Sourcemap
16885:29622:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26696:310;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26696:310:0;;;;:::i;:::-;;30083:337;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;30083:337:0;;;;;;;;;;:::i;6883:102::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7948:212;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7948:212:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;33540:219;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33540:219:0;;:::i;1253:154::-;;;;;;;;;;;;;:::i;18539:30::-;;;;;;;;;;;;;:::i;18152:24::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;16968:41;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;16968:41:0;;;;;;;;;;;;;;33346:83;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33346:83:0;;;;:::i;7210:108::-;;;;;;;;;;;;;:::i;29013:136::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29013:136:0;;:::i;8168:456::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8168:456:0;;;;;;;;;;;;;;;;;:::i;32952:89::-;;;;;;;;;;;;;:::i;24963:514::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24963:514:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24963:514:0;;;;;;;;;;;;-1:-1:-1;24963:514:0;-1:-1:-1;24963:514:0;;:::i;17016:40::-;;;;;;;;;;;;;:::i;1706:331::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1706:331:0;-1:-1:-1;;;;;1706:331:0;;:::i;29423:141::-;;;;;;;;;;;;;:::i;7107:95::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17744:46;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17744:46:0;-1:-1:-1;;;;;17744:46:0;;:::i;8632:302::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8632:302:0;;;;;;;;:::i;18294:30::-;;;;;;;;;;;;;:::i;21934:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21934:105:0;;;;;;;;:::i;18183:29::-;;;;;;;;;;;;;:::i;17515:59::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17515:59:0;-1:-1:-1;;;;;17515:59:0;;:::i;28581:292::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;28581:292:0;;;;;;;;;;:::i;17065:28::-;;;;;;;;;;;;;:::i;18508:24::-;;;;;;;;;;;;;:::i;30851:103::-;;;;;;;;;;;;;:::i;29572:128::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29572:128:0;-1:-1:-1;;;;;29572:128:0;;:::i;22047:82::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22047:82:0;-1:-1:-1;;;;;22047:82:0;;:::i;18483:18::-;;;;;;;;;;;;;:::i;18691:25::-;;;;;;;;;;;;;:::i;18664:20::-;;;;;;;;;;;;;:::i;33767:299::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33767:299:0;;:::i;30962:142::-;;;;;;;;;;;;;:::i;23147:1062::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23147:1062:0;-1:-1:-1;;;;;23147:1062:0;;:::i;24360:452::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24360:452:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24360:452:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24360:452:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24360:452:0;;;;;;;;;;-1:-1:-1;24360:452:0;;-1:-1:-1;24360:452:0;-1:-1:-1;24360:452:0;:::i;29902:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29902:173:0;-1:-1:-1;;;;;29902:173:0;;:::i;18414:23::-;;;;;;;;;;;;;:::i;7326:177::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7326:177:0;-1:-1:-1;;;;;7326:177:0;;:::i;1095:150::-;;;;;;;;;;;;;:::i;27014:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27014:247:0;;;;:::i;18634:23::-;;;;;;;;;;;;;:::i;18607:20::-;;;;;;;;;;;;;:::i;18576:24::-;;;;;;;;;;;;;:::i;27269:548::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27269:548:0;;;;;;;;;;:::i;31112:188::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31112:188:0;-1:-1:-1;;;;;31112:188:0;;:::i;22137:1002::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;22137:1002:0;-1:-1:-1;;;;;22137:1002:0;;:::i;18366:39::-;;;;;;;;;;;;;:::i;32062:247::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32062:247:0;;:::i;608:79::-;;;;;;;;;;;;;:::i;26433:255::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26433:255:0;;:::i;6993:106::-;;;;;;;;;;;;;:::i;33437:95::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33437:95:0;;;;:::i;18044:27::-;;;;;;;;;;;;;:::i;27825:300::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;27825:300:0;;;;;;;;;;:::i;35979:1593::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;35979:1593:0;-1:-1:-1;;;;;35979:1593:0;;:::i;33049:170::-;;;;;;;;;;;;;:::i;25596:329::-;;;;;;;;;;;;;:::i;29306:109::-;;;;;;;;;;;;;:::i;8942:402::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8942:402:0;;;;;;;;:::i;17974:31::-;;;;;;;;;;;;;:::i;18723:30::-;;;;;;;;;;;;;:::i;29708:186::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29708:186:0;-1:-1:-1;;;;;29708:186:0;;:::i;7511:218::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7511:218:0;;;;;;;;:::i;17692:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17692:45:0;-1:-1:-1;;;;;17692:45:0;;:::i;30428:415::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30428:415:0;-1:-1:-1;;;;;30428:415:0;;:::i;:::-;;;;-1:-1:-1;;;;;30428:415:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17244:64;;;;;;;;;;;;;:::i;26250:175::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26250:175:0;;;;:::i;17451:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17451:57:0;-1:-1:-1;;;;;17451:57:0;;:::i;25933:309::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25933:309:0;;;;;;;;;;:::i;32317:425::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32317:425:0;;;;;;;;;;;;:::i;18331:28::-;;;;;;;;;;;;;:::i;31308:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31308:190:0;-1:-1:-1;;;;;31308:190:0;;:::i;18012:25::-;;;;;;;;;;;;;:::i;31704:350::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31704:350:0;;;;;;;;;:::i;7737:203::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7737:203:0;;;;;;;;;;:::i;695:89::-;;;;;;;;;;;;;:::i;32750:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32750:93:0;;;;:::i;18112:33::-;;;;;;;;;;;;;:::i;18219:35::-;;;;;;;;;;;;;:::i;18261:26::-;;;;;;;;;;;;;:::i;29157:141::-;;;;;;;;;;;;;:::i;28881:124::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28881:124:0;;:::i;18444:32::-;;;;;;;;;;;;;:::i;31506:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31506:190:0;-1:-1:-1;;;;;31506:190:0;;:::i;32851:93::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;32851:93:0;;;;:::i;1415:283::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1415:283:0;-1:-1:-1;;;;;1415:283:0;;:::i;33227:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;33227:111:0;;;;:::i;17640:45::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17640:45:0;-1:-1:-1;;;;;17640:45:0;;:::i;26696:310::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;26833:18:::1;::::0;::::1;-1:-1:-1::0;;;26833:18:0;;::::1;;:41;;::::0;::::1;;;;26811:136;;;;-1:-1:-1::0;;;26811:136:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26958:18;:40:::0;;;::::1;;-1:-1:-1::0;;;26958:40:0::1;-1:-1:-1::0;;;;26958:40:0;;::::1;::::0;;;::::1;::::0;;26696:310::o;30083:337::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;30231:15:::1;::::0;:46:::1;::::0;;-1:-1:-1;;;30231:46:0;;-1:-1:-1;;;;;30231:46:0;;::::1;;::::0;::::1;::::0;;;:15;;;::::1;::::0;:37:::1;::::0;:46;;;;;::::1;::::0;;;;;;;;:15;:46;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;30231:46:0;30229:49:::1;30207:130;;;::::0;;-1:-1:-1;;;30207:130:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;30348:15;::::0;:64:::1;::::0;;-1:-1:-1;;;30348:64:0;;-1:-1:-1;;;;;30348:64:0;;::::1;;::::0;::::1;::::0;;::::1;;::::0;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:64;;;;;:15:::1;::::0;:64;;;;;;;:15;;:64;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;30083:337:::0;;:::o;6883:102::-;6972:5;6965:12;;;;;;;;-1:-1:-1;;6965:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6939:13;;6965:12;;6972:5;;6965:12;;6972:5;6965:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6883:102;:::o;7948:212::-;8069:4;8091:39;8100:12;:10;:12::i;:::-;8114:7;8123:6;8091:8;:39::i;:::-;-1:-1:-1;8148:4:0;7948:212;;;;;:::o;33540:219::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;33636:11:::1;::::0;33672:16:::1;:7:::0;17132:6:::1;33672:11;:16::i;:::-;33658:11;:30:::0;;;33704:47:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;902:1;33540:219:::0;:::o;1253:154::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;1362:6:::1;::::0;1350:10:::1;::::0;1329:40:::1;::::0;-1:-1:-1;;;;;1362:6:0;;::::1;::::0;1350:10;;::::1;::::0;-1:-1:-1;;;;;;;;;;;1329:40:0;1362:6:::1;::::0;1329:40:::1;1393:6;::::0;1380:10:::1;:19:::0;;-1:-1:-1;;;;;;1380:19:0::1;-1:-1:-1::0;;;;;1393:6:0;;::::1;1380:19:::0;;;::::1;::::0;;1253:154::o;18539:30::-;;;-1:-1:-1;;;18539:30:0;;;;;:::o;18152:24::-;;;;:::o;16968:41::-;;;-1:-1:-1;;;;;16968:41:0;;:::o;33346:83::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;33407:6:::1;:14:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;33407:14:0;;::::1;::::0;;;::::1;::::0;;33346:83::o;7210:108::-;7298:12;;7210:108;:::o;29013:136::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;29093:15:::1;::::0;:48:::1;::::0;;-1:-1:-1;;;29093:48:0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;29093:15:0;;::::1;::::0;:34:::1;::::0;:48;;;;;:15:::1;::::0;:48;;;;;;;;:15;;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29013:136:::0;:::o;8168:456::-;8310:4;8327:36;8337:6;8345:9;8356:6;8327:9;:36::i;:::-;8374:220;8397:6;8418:12;:10;:12::i;:::-;8445:138;8501:6;8445:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8445:19:0;;;;;;:11;:19;;;;;;8465:12;:10;:12::i;:::-;-1:-1:-1;;;;;8445:33:0;;;;;;;;;;;;-1:-1:-1;8445:33:0;;;:138;:37;:138::i;:::-;8374:8;:220::i;:::-;-1:-1:-1;8612:4:0;8168:456;;;;;:::o;32952:89::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;33013:12:::1;:20:::0;;-1:-1:-1;;;;33013:20:0::1;::::0;;32952:89::o;24963:514::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;25092:9:::1;::::0;25134:15:::1;:6:::0;17132::::1;25134:10;:15::i;:::-;25116:33;;25160:310;25167:26:::0;;::::1;25160:310;;;25210:19;25232:15;;25248:1;25232:18;;;;;;;;;;;;;-1:-1:-1::0;;;;;25232:18:0::1;25210:40;;25265:43;25275:10;25287:11;25300:7;25265:9;:43::i;:::-;-1:-1:-1::0;;;;;25350:24:0;::::1;;::::0;;;:11:::1;:24;::::0;;;;;:37:::1;::::0;25379:7;25350:28:::1;:37::i;:::-;-1:-1:-1::0;;;;;25323:24:0;;::::1;;::::0;;;:11:::1;:24;::::0;;;;;;;:64;;;;25402:13:::1;:26:::0;;;:33;;-1:-1:-1;;25402:33:0::1;25431:4;25402:33:::0;;::::1;::::0;;;25452:6;;;::::1;::::0;25160:310:::1;;17016:40:::0;;;-1:-1:-1;;;;;17016:40:0;;:::o;1706:331::-;991:12;:10;:12::i;:::-;977:10;;-1:-1:-1;;;;;977:10:0;;;:26;;;955:112;;;;-1:-1:-1;;;955:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1851:22:0;::::1;1829:110;;;;-1:-1:-1::0;;;1829:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1976:10;::::0;1955:42:::1;::::0;-1:-1:-1;;;;;1955:42:0;;::::1;::::0;1976:10:::1;::::0;-1:-1:-1;;;;;;;;;;;1955:42:0;1976:10:::1;::::0;1955:42:::1;2008:10;:21:::0;;-1:-1:-1;;;;;;2008:21:0::1;-1:-1:-1::0;;;;;2008:21:0;;;::::1;::::0;;;::::1;::::0;;1706:331::o;29423:141::-;29513:15;;:43;;;-1:-1:-1;;;29513:43:0;;;;29486:7;;-1:-1:-1;;;;;29513:15:0;;:41;;:43;;;;;;;;;;;;;;:15;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29513:43:0;;-1:-1:-1;29423:141:0;:::o;7107:95::-;7192:2;7107:95;:::o;17744:46::-;;;;;;;;;;;;;:::o;8632:302::-;8749:4;8771:133;8794:12;:10;:12::i;:::-;8821:7;8843:50;8882:10;8843:11;:25;8855:12;:10;:12::i;:::-;-1:-1:-1;;;;;8843:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;8843:25:0;;;:34;;;;;;;;;;;:38;:50::i;18294:30::-;;;;:::o;21934:105::-;991:12;:10;:12::i;:::-;977:10;;-1:-1:-1;;;;;977:10:0;;;:26;;;955:112;;;;-1:-1:-1;;;955:112:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22012:19:::1;22018:3;22023:7;22012:5;:19::i;:::-;21934:105:::0;;:::o;18183:29::-;;;;:::o;17515:59::-;;;;;;;;;;;;;;;:::o;28581:292::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;28670:5:::1;28666:159;;;-1:-1:-1::0;;;;;28701:22:0;::::1;;::::0;;;:13:::1;:22;::::0;;;;;::::1;;28700:23;28692:55;;;::::0;;-1:-1:-1;;;28692:55:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;28692:55:0;;;;;;;;;;;;;::::1;;28762:15;::::0;:51:::1;::::0;;-1:-1:-1;;;28762:51:0;;-1:-1:-1;;;;;28762:51:0;;::::1;;::::0;::::1;::::0;:15;:51;;;;;;:15;;;::::1;::::0;:36:::1;::::0;:51;;;;;:15:::1;::::0;:51;;;;;;;:15;;:51;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;28666:159;-1:-1:-1::0;;;;;28835:22:0;;;::::1;;::::0;;;:13:::1;:22;::::0;;;;:30;;-1:-1:-1;;28835:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;28581:292::o;17065:28::-;;;-1:-1:-1;;;;;17065:28:0;;:::o;18508:24::-;;;;;;;;;:::o;30851:103::-;30888:15;;:58;;;-1:-1:-1;;;30888:58:0;;30927:10;30888:58;;;;:15;:58;;;;;;;;-1:-1:-1;;;;;30888:15:0;;;;:30;;:58;;;;;;;;;;;;;;;;;;:15;:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29572:128;-1:-1:-1;;;;;29664:28:0;;29640:4;29664:28;;;:19;:28;;;;;;;;29572:128;;;;:::o;22047:82::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;22109:4:::1;:12:::0;;-1:-1:-1;;;;;;22109:12:0::1;-1:-1:-1::0;;;;;22109:12:0;;;::::1;::::0;;;::::1;::::0;;22047:82::o;18483:18::-;;;;;;;;;:::o;18691:25::-;;;-1:-1:-1;;;18691:25:0;;;;;:::o;18664:20::-;;;-1:-1:-1;;;18664:20:0;;;;;:::o;33767:299::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;33871:18:::1;::::0;33921:16:::1;:7:::0;17132:6:::1;33921:11;:16::i;:::-;33900:18;:37:::0;;;33953:105:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;902:1;33767:299:::0;:::o;30962:142::-;31055:15;;:41;;;-1:-1:-1;;;31055:41:0;;;;31028:7;;-1:-1:-1;;;;;31055:15:0;;:39;;:41;;;;;;;;;;;;;;:15;:41;;;;;;;;;;23147:1062;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;23270:15:::1;::::0;-1:-1:-1;;;;;23248:38:0;;::::1;23270:15:::0;::::1;23248:38;;23226:123;;;;-1:-1:-1::0;;;23226:123:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;23382:24:0;::::1;23360:111;;;;-1:-1:-1::0;;;23360:111:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23529:15;::::0;23487:59:::1;::::0;-1:-1:-1;;;;;23529:15:0;;::::1;::::0;23487:59;::::1;::::0;::::1;::::0;23529:15:::1;::::0;23487:59:::1;23593:15;::::0;;-1:-1:-1;;;;;23593:15:0;;::::1;23613:5;23557:53:::0;;;:27:::1;:53;::::0;;;;;;;:61;;-1:-1:-1;;23557:61:0;;::::1;::::0;;;23655:13:::1;::::0;;::::1;23629:40:::0;;:25:::1;:40:::0;;;;;:48;;;;::::1;::::0;;23688;;-1:-1:-1;;;;;;23688:48:0::1;::::0;;::::1;;::::0;;;;23790:25;;-1:-1:-1;;;23790:25:0;;;;23613:5;;23790:15;;::::1;::::0;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;23557:53;23790:25;;;;;:15;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23790:25:0;23854:4:::1;::::0;23772:87:::1;::::0;;-1:-1:-1;;;23772:87:0;;23847:4:::1;23772:87;::::0;::::1;::::0;-1:-1:-1;;;;;23854:4:0;;::::1;23772:87:::0;;;;;;:66;;;::::1;::::0;::::1;::::0;:87;;;;;23790:25:::1;::::0;23772:87;;;;;;;:66;:87;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23772:87:0;;-1:-1:-1;;;;;;23874:30:0;::::1;23870:174;;23956:15;;;;;;;;;-1:-1:-1::0;;;;;23956:15:0::1;-1:-1:-1::0;;;;;23956:23:0::1;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23956:25:0;24027:4:::1;::::0;23938:94:::1;::::0;;-1:-1:-1;;;23938:94:0;;24020:4:::1;23938:94;::::0;::::1;::::0;-1:-1:-1;;;;;24027:4:0;;::::1;23938:94:::0;;;;;;:73;;;::::1;::::0;::::1;::::0;:94;;;;;23956:25:::1;::::0;23938:94;;;;;;;24027:4:::1;23938:73:::0;:94;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;23938:94:0;;-1:-1:-1;23870:174:0::1;-1:-1:-1::0;;;;;24054:39:0;;::::1;;::::0;;;:27:::1;:39;::::0;;;;:46;;24096:4:::1;-1:-1:-1::0;;24054:46:0;;::::1;::::0;::::1;::::0;;;24111:13:::1;:30:::0;;-1:-1:-1;;;;;;24111:30:0::1;::::0;;::::1;;::::0;;;;24152:49:::1;::::0;24181:13:::1;::::0;24152:28:::1;:49::i;24360:452::-:0;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;24510:34;;::::1;24488:109;;;::::0;;-1:-1:-1;;;24488:109:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;24488:109:0;;;;;;;;;;;;;::::1;;24608:9;24632:173;24639:20:::0;;::::1;24632:173;;;24676:15;24694:19;17132:6;24694:7;;24702:1;24694:10;;;;;;;;;;;;;:14;;:19;;;;:::i;:::-;24676:37;;24728:44;24738:10;24750:9;;24760:1;24750:12;;;;;;;;;;;;;-1:-1:-1::0;;;;;24750:12:0::1;24764:7;24728:9;:44::i;:::-;-1:-1:-1::0;24792:1:0::1;24787:6;24632:173;;29902::::0;30033:15;;:34;;;-1:-1:-1;;;30033:34:0;;-1:-1:-1;;;;;30033:34:0;;;;;;;;;30001:7;;30033:15;;;;;:25;;:34;;;;;;;;;;;;;;;:15;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30033:34:0;;29902:173;-1:-1:-1;;29902:173:0:o;18414:23::-;;;;;;:::o;7326:177::-;-1:-1:-1;;;;;7477:18:0;7445:7;7477:18;;;;;;;;;;;;7326:177::o;1095:150::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;1188:6:::1;::::0;1167:40:::1;::::0;1204:1:::1;::::0;-1:-1:-1;;;;;1188:6:0::1;::::0;-1:-1:-1;;;;;;;;;;;1167:40:0;1204:1;;1167:40:::1;1218:6;:19:::0;;-1:-1:-1;;;;;;1218:19:0::1;::::0;;1095:150::o;27014:247::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;27113:13:::1;::::0;::::1;-1:-1:-1::0;;;27113:13:0;;::::1;;:31;;::::0;::::1;;;;27091:121;;;;-1:-1:-1::0;;;27091:121:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27223:13;:30:::0;;;::::1;;-1:-1:-1::0;;;27223:30:0::1;-1:-1:-1::0;;;;27223:30:0;;::::1;::::0;;;::::1;::::0;;27014:247::o;18634:23::-;;;-1:-1:-1;;;18634:23:0;;;;;:::o;18607:20::-;;;-1:-1:-1;;;18607:20:0;;;;;:::o;18576:24::-;;;-1:-1:-1;;;18576:24:0;;;;;:::o;27269:548::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;27429:15:::1;::::0;-1:-1:-1;;;;;27411:34:0;;::::1;27429:15:::0;::::1;27411:34;;27389:141;;;;-1:-1:-1::0;;;27389:141:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;27563:35:0;::::1;;::::0;;;:27:::1;:35;::::0;;;;;::::1;;:44;;::::0;::::1;;;;27541:152;;;;-1:-1:-1::0;;;27541:152:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;27704:35:0;;::::1;;::::0;;;:27:::1;:35;::::0;;;;;:43;;-1:-1:-1;;27704:43:0::1;::::0;::::1;;;::::0;;27758:15:::1;::::0;:51;;-1:-1:-1;;;27758:51:0;;::::1;::::0;::::1;::::0;;;;;;;;;;;;:15;::::1;::::0;:36:::1;::::0;:51;;;;;27704:35;27758:51;;;;;;27704:35;27758:15;:51;::::1;;::::0;::::1;;;;::::0;::::1;31112:188:::0;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31189:23:0;::::1;31181:71;;;;-1:-1:-1::0;;;31181:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31263:8;:29:::0;;-1:-1:-1;;;;;31263:29:0;;::::1;-1:-1:-1::0;;;31263:29:0::1;-1:-1:-1::0;;;;;31263:29:0;;::::1;::::0;;;::::1;::::0;;31112:188::o;22137:1002::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;22262:15:::1;::::0;-1:-1:-1;;;;;22240:38:0;;::::1;22262:15:::0;::::1;22240:38;;22218:133;;;;-1:-1:-1::0;;;22218:133:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22496:48;::::0;;-1:-1:-1;;;22496:48:0;;22538:4:::1;22496:48;::::0;::::1;::::0;;;22441:10;;-1:-1:-1;;;;;22496:33:0;::::1;::::0;::::1;::::0;:48;;;;;::::1;::::0;;;;;;;;;:33;:48;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;22496:48:0;22474:154:::1;;;;-1:-1:-1::0;;;22474:154:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22639:112;::::0;;-1:-1:-1;;;22639:112:0;;-1:-1:-1;;;;;22639:39:0;::::1;:112;::::0;::::1;::::0;;;22735:5:::1;22639:112:::0;;;;;;;;:39;;::::1;::::0;:112;;;;;;;;;;;22735:5;22639:39;:112;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;22762:61:0::1;::::0;;-1:-1:-1;;;22762:61:0;;22810:4:::1;22762:61;::::0;::::1;::::0;22817:5:::1;22762:61:::0;;;;;;;;-1:-1:-1;;;;;22762:39:0;::::1;::::0;-1:-1:-1;22762:39:0::1;::::0;-1:-1:-1;22762:61:0;;;;;22817:5;22762:61;;;;;22817:5;22762:39;:61;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;22834:18;-1:-1:-1::0;;;;;22834:39:0::1;;22874:7;:5;:7::i;:::-;22883:5;22834:55;;;;;;;;;;;;;-1:-1:-1::0;;;;;22834:55:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;22962:15:0::1;::::0;22900:109:::1;::::0;;-1:-1:-1;;;22900:109:0;;-1:-1:-1;;;;;22962:15:0;;::::1;22900:109;::::0;::::1;::::0;22962:15:::1;22900:109:::0;;;;;;;;:39;;::::1;::::0;-1:-1:-1;22900:39:0::1;::::0;-1:-1:-1;22900:109:0;;;;;;;;;;;22962:15;22900:39;:109;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;23067:15:0::1;::::0;23025:59:::1;::::0;-1:-1:-1;;;;;23067:15:0;;::::1;::::0;-1:-1:-1;23025:59:0;;::::1;::::0;-1:-1:-1;23025:59:0::1;::::0;23067:15:::1;::::0;23025:59:::1;23095:15;:36:::0;;-1:-1:-1;;;;;;23095:36:0::1;-1:-1:-1::0;;;;;23095:36:0;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;22137:1002:0:o;18366:39::-;;;;:::o;32062:247::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;32166:15:::1;::::0;32210:16:::1;:7:::0;17132:6:::1;32210:11;:16::i;:::-;32192:15;:34:::0;;;32242:59:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;;;;;;;;::::1;902:1;32062:247:::0;:::o;608:79::-;673:6;;-1:-1:-1;;;;;673:6:0;608:79;:::o;26433:255::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;26566:24:::1;::::0;26524:105:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;;;;;;;;::::1;26640:24;:40:::0;26433:255::o;6993:106::-;7084:7;7077:14;;;;;;;;-1:-1:-1;;7077:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7051:13;;7077:14;;7084:7;;7077:14;;7084:7;7077:14;;;;;;;;;;;;;;;;;;;;;;;;33437:95;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;33504:12:::1;:20:::0;;;::::1;;::::0;::::1;-1:-1:-1::0;;33504:20:0;;::::1;::::0;;;::::1;::::0;;33437:95::o;18044:27::-;;;;:::o;27825:300::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;27971:13:::1;::::0;-1:-1:-1;;;;;27963:21:0;;::::1;27971:13:::0;::::1;27963:21;;27941:124;;;;-1:-1:-1::0;;;27941:124:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28076:41;28105:4;28111:5;28076:28;:41::i;35979:1593::-:0;-1:-1:-1;;;;;36124:19:0;;36076:21;36124:19;;;:13;:19;;;;;;;;36123:20;36115:52;;;;;-1:-1:-1;;;36115:52:0;;;;;;;;;;;;-1:-1:-1;;;36115:52:0;;;;;;;;;;;;;;;36182:13;;-1:-1:-1;;;36182:13:0;;;;:64;;;;-1:-1:-1;;;;;;36200:19:0;;;;;;:13;:19;;;;;;36230:15;36222:5;36200:27;;;:45;36182:64;36178:105;;;-1:-1:-1;36270:1:0;36263:8;;36178:105;36311:15;36321:4;36311:9;:15::i;:::-;36295:31;;36339:18;36360:35;36380:14;;36360:15;:19;;:35;;;;:::i;:::-;36339:56;;36427:8;36414:10;:21;:45;;;-1:-1:-1;;;;;;36440:19:0;;;;;;:13;:19;;;;;;;;36439:20;36414:45;36408:481;;36477:16;36496:35;36514:4;36520:10;36496:17;:35::i;:::-;36477:54;;36570:15;;36559:8;:26;:55;;36606:8;36559:55;;;36588:15;;36559:55;-1:-1:-1;;;;;36653:17:0;;;;;;:11;:17;;;;;;36548:66;;-1:-1:-1;36653:31:0;;36548:66;36653:21;:31::i;:::-;36635:15;36645:4;36635:9;:15::i;:::-;:49;36631:247;;;-1:-1:-1;;;;;36763:17:0;;;;;;:11;:17;;;;;;36721:92;;36763:31;;36785:8;36763:21;:31::i;:::-;36721:15;36731:4;36721:9;:15::i;:::-;:19;;:92::i;:::-;36705:108;;36631:247;;;36861:1;36854:8;;;;;;36631:247;36408:481;;36919:18;;-1:-1:-1;;;36919:18:0;;;;:67;;;;-1:-1:-1;;;;;;36941:19:0;;;;;;:13;:19;;;;;;36971:15;36963:5;36941:27;;;:45;36919:67;36901:664;;;-1:-1:-1;;;;;37088:32:0;;37013:27;37088:32;;;:26;:32;;;;;;37043:24;;:77;;:180;;37222:1;37043:180;;;-1:-1:-1;;;;;37169:32:0;;;;;;:26;:32;;;;;;37140:24;;:62;;:28;:62::i;:::-;37013:210;;37271:19;37254:13;:36;;:108;;37343:19;37254:108;;;37310:13;37254:108;37238:124;;36901:664;;;;37384:18;;-1:-1:-1;;;37384:18:0;;;;37380:185;;;37452:24;;37435:13;:41;;:118;;37529:24;;37435:118;;;37496:13;37435:118;37419:134;;37380:185;35979:1593;;;;:::o;33049:170::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;33125:15:::1;33108:14;:32:::0;33174:12:::1;33151:20;:35:::0;33197:6:::1;:14:::0;;-1:-1:-1;;33197:14:0::1;::::0;;33049:170::o;25596:329::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;25744:15:::1;::::0;:25:::1;::::0;;-1:-1:-1;;;25744:25:0;;;;25701:22:::1;::::0;-1:-1:-1;;;;;25744:15:0::1;::::0;:23:::1;::::0;:25:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:15;:25;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25744:25:0;25811:4:::1;::::0;25726:90:::1;::::0;;-1:-1:-1;;;25726:90:0;;25804:4:::1;25726:90;::::0;::::1;::::0;-1:-1:-1;;;;;25811:4:0;;::::1;25726:90:::0;;;;;;:69;;;::::1;::::0;::::1;::::0;:90;;;;;25744:25:::1;::::0;25726:90;;;;;;;25811:4:::1;25726:69:::0;:90;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;25726:90:0;25827:13:::1;:30:::0;;-1:-1:-1;;;;;;25827:30:0::1;-1:-1:-1::0;;;;;25827:30:0;;::::1;::::0;;;::::1;::::0;;;;25726:90;;-1:-1:-1;25868:49:0::1;::::0;25897:13:::1;-1:-1:-1::0;25868:28:0::1;:49::i;:::-;902:1;25596:329::o:0;29306:109::-;29380:15;;:27;;;-1:-1:-1;;;29380:27:0;;;;29353:7;;-1:-1:-1;;;;;29380:15:0;;:25;;:27;;;;;;;;;;;;;;:15;:27;;;;;;;;;;8942:402;9064:4;9086:228;9109:12;:10;:12::i;:::-;9136:7;9158:145;9215:15;9158:145;;;;;;;;;;;;;;;;;:11;:25;9170:12;:10;:12::i;:::-;-1:-1:-1;;;;;9158:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;9158:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;17974:31::-;;;;:::o;18723:30::-;;;-1:-1:-1;;;18723:30:0;;;;;:::o;29708:186::-;29839:15;;:47;;;-1:-1:-1;;;29839:47:0;;-1:-1:-1;;;;;29839:47:0;;;;;;;;;29807:7;;29839:15;;;;;:38;;:47;;;;;;;;;;;;;;;:15;:47;;;;;;;;;;7511:218;7635:4;7657:42;7667:12;:10;:12::i;:::-;7681:9;7692:6;7657:9;:42::i;17692:45::-;;;;;;;;;;;;;;;:::o;30428:415::-;30799:15;;:36;;;-1:-1:-1;;;30799:36:0;;-1:-1:-1;;;;;30799:36:0;;;;;;;;;30543:15;;;;;;;;;;;;30799;;:26;;:36;;;;;;;;;;;;;;:15;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30799:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30799:36:0;;-1:-1:-1;30799:36:0;-1:-1:-1;30799:36:0;;-1:-1:-1;30799:36:0;-1:-1:-1;30428:415:0;-1:-1:-1;;30428:415:0:o;17244:64::-;;;-1:-1:-1;;;;;17244:64:0;;:::o;26250:175::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;26325:8:::1;::::0;::::1;-1:-1:-1::0;;;26325:8:0;;::::1;;:21;;::::0;::::1;;;;26317:69;;;;-1:-1:-1::0;;;26317:69:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26397:8;:20:::0;;;::::1;;-1:-1:-1::0;;;26397:20:0::1;-1:-1:-1::0;;;;26397:20:0;;::::1;::::0;;;::::1;::::0;;26250:175::o;17451:57::-;;;;;;;;;;;;;;;:::o;25933:309::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;26040:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;::::1;;:40;;::::0;::::1;;;;26018:116;;;::::0;;-1:-1:-1;;;26018:116:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;26018:116:0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;26145:28:0;::::1;;::::0;;;:19:::1;:28;::::0;;;;;;;;:39;;-1:-1:-1;;26145:39:0::1;::::0;::::1;;::::0;;::::1;::::0;;;26200:34;;;;;;;::::1;::::0;;;;;;;;::::1;25933:309:::0;;:::o;32317:425::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;32468:16:::1;:35:::0;;;32514:12:::1;:28:::0;;;32553:10:::1;:24:::0;;;32600:50:::1;32566:11:::0;32600:34:::1;32487:16:::0;32529:13;32600:20:::1;:34::i;:::-;:38:::0;::::1;:50::i;:::-;32588:9;:62:::0;;;32680:16:::1;::::0;32698:12:::1;::::0;32712:10:::1;::::0;32668:66:::1;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;;;;;;;::::1;::::0;;;;;;;::::1;32317:425:::0;;;:::o;18331:28::-;;;;:::o;31308:190::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31385:23:0;::::1;31377:71;;;;-1:-1:-1::0;;;31377:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31461:8;:29:::0;;-1:-1:-1;;;;;;31461:29:0::1;-1:-1:-1::0;;;;;31461:29:0;;;::::1;::::0;;;::::1;::::0;;31308:190::o;18012:25::-;;;;:::o;31704:350::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;31816:11:::1;::::0;31854:16:::1;:7:::0;17132:6:::1;31854:11;:16::i;:::-;31840:11;:30:::0;;;31881:18:::1;:29:::0;;;::::1;;-1:-1:-1::0;;;31881:29:0;;::::1;-1:-1:-1::0;;;;31881:29:0;;::::1;::::0;;;::::1;::::0;;;31928:118:::1;::::0;;;;;;;::::1;::::0;;;;32017:18:::1;31881:29;32017:18;31928:118;;::::0;;;;;;::::1;::::0;;;;;;;::::1;902:1;31704:350:::0;;:::o;7737:203::-;-1:-1:-1;;;;;7905:18:0;;;7873:7;7905:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;7737:203::o;695:89::-;766:10;;-1:-1:-1;;;;;766:10:0;695:89;:::o;32750:93::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;32816:11:::1;:19:::0;;-1:-1:-1;;32816:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;32750:93::o;18112:33::-;;;;:::o;18219:35::-;;;;:::o;18261:26::-;;;;:::o;29157:141::-;29241:15;;:49;;;-1:-1:-1;;;29241:49:0;;;;29214:7;;-1:-1:-1;;;;;29241:15:0;;:47;;:49;;;;;;;;;;;;;;:15;:49;;;;;;;;;;28881:124;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;28955:15:::1;::::0;:42:::1;::::0;;-1:-1:-1;;;28955:42:0;;::::1;::::0;::::1;::::0;;;;;-1:-1:-1;;;;;28955:15:0;;::::1;::::0;:31:::1;::::0;:42;;;;;:15:::1;::::0;:42;;;;;;;;:15;;:42;::::1;;::::0;::::1;;;;::::0;::::1;18444:32:::0;;;;;;;;;:::o;31506:190::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;31583:23:0;::::1;31575:71;;;;-1:-1:-1::0;;;31575:71:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31659:8;:29:::0;;-1:-1:-1;;;;;;31659:29:0::1;-1:-1:-1::0;;;;;31659:29:0;;;::::1;::::0;;;::::1;::::0;;31506:190::o;32851:93::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;32917:11:::1;:19:::0;;;::::1;;-1:-1:-1::0;;;32917:19:0::1;-1:-1:-1::0;;;;32917:19:0;;::::1;::::0;;;::::1;::::0;;32851:93::o;1415:283::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;1520:22:0;::::1;1498:110;;;;-1:-1:-1::0;;;1498:110:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1645:6;::::0;1624:38:::1;::::0;-1:-1:-1;;;;;1624:38:0;;::::1;::::0;1645:6:::1;::::0;-1:-1:-1;;;;;;;;;;;1624:38:0;1645:6:::1;::::0;1624:38:::1;1673:6;:17:::0;;-1:-1:-1;;;;;;1673:17:0::1;-1:-1:-1::0;;;;;1673:17:0;;;::::1;::::0;;;::::1;::::0;;1415:283::o;33227:111::-;842:12;:10;:12::i;:::-;832:6;;-1:-1:-1;;;;;832:6:0;;;:22;;;824:67;;;;;-1:-1:-1;;;824:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;824:67:0;;;;;;;;;;;;;;;33302:20:::1;:28:::0;;;::::1;;;;-1:-1:-1::0;;33302:28:0;;::::1;::::0;;;::::1;::::0;;33227:111::o;17640:45::-;;;;;;;;;;;;;;;:::o;2068:179::-;2126:7;2158:5;;;2182:6;;;;2174:46;;;;;-1:-1:-1;;;2174:46:0;;;;;;;;;;;;-1:-1:-1;;;2174:46:0;;;;;;;;;;;;;;;2238:1;2068:179;-1:-1:-1;;;2068:179:0:o;95:98::-;175:10;95:98;:::o;10629:378::-;-1:-1:-1;;;;;10765:19:0;;10757:68;;;;-1:-1:-1;;;10757:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10844:21:0;;10836:68;;;;-1:-1:-1;;;10836:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;10915:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;10967:32;;;;;;;;;;;;;;;;;10629:378;;;:::o;2631:246::-;2689:7;2713:6;2709:47;;-1:-1:-1;2743:1:0;2736:8;;2709:47;2778:5;;;2782:1;2778;:5;:1;2802:5;;;;;:10;2794:56;;;;-1:-1:-1;;;2794:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37580:3203;-1:-1:-1;;;;;37712:18:0;;37704:68;;;;-1:-1:-1;;;37704:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37791:16:0;;37783:64;;;;-1:-1:-1;;;37783:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37881:19:0;;;;;;:13;:19;;;;;;;;37880:20;:59;;;;-1:-1:-1;;;;;;37922:17:0;;;;;;:13;:17;;;;;;;;37921:18;37880:59;:105;;;;-1:-1:-1;37975:9:0;37961:24;;;;:13;:24;;;;;;;;37960:25;37880:105;37858:174;;;;;-1:-1:-1;;;37858:174:0;;;;;;;;;;;;-1:-1:-1;;;37858:174:0;;;;;;;;;;;;;;;38055:7;:5;:7::i;:::-;-1:-1:-1;;;;;38047:15:0;:4;-1:-1:-1;;;;;38047:15:0;;38043:82;;38088:6;;;;;;;38087:7;38079:34;;;;;-1:-1:-1;;;38079:34:0;;;;;;;;;;;;-1:-1:-1;;;38079:34:0;;;;;;;;;;;;;;;38149:7;:5;:7::i;:::-;-1:-1:-1;;;;;38141:15:0;:4;-1:-1:-1;;;;;38141:15:0;;;:32;;;;;38166:7;:5;:7::i;:::-;-1:-1:-1;;;;;38160:13:0;:2;-1:-1:-1;;;;;38160:13:0;;;38141:32;38137:109;;;38190:44;38217:4;38223:2;38227:6;38190:26;:44::i;:::-;38276:9;38262:24;;;;:13;:24;;;;;;;;38258:63;;;38303:7;;38258:63;38333:15;38351;38361:4;38351:9;:15::i;:::-;38333:33;;38377:18;38398:35;38418:14;;38398:15;:19;;:35;;;;:::i;:::-;38377:56;;38463:8;38450:10;:21;38446:689;;;-1:-1:-1;;;;;38492:19:0;;;;;;:13;:19;;;;;;;;38488:87;;;-1:-1:-1;;;;;38532:19:0;;38554:5;38532:19;;;:13;:19;;;;;:27;;-1:-1:-1;;38532:27:0;;;38488:87;38446:689;;;38607:20;38630:35;38648:4;38654:10;38630:17;:35::i;:::-;-1:-1:-1;;;;;38702:29:0;;;;;;:25;:29;;;;;;38607:58;;-1:-1:-1;38702:29:0;;;:64;;-1:-1:-1;;;;;;38735:31:0;;;;;;:27;:31;;;;;;;;38702:64;38680:257;;;38831:15;;38816:12;:30;:105;;38909:12;38816:105;;;38870:15;;38816:105;38801:120;;38680:257;-1:-1:-1;;;;;39002:17:0;;;;;;:11;:17;;;;;;:35;;39024:12;39002:21;:35::i;:::-;38979:19;:7;38991:6;38979:11;:19::i;:::-;:58;;38953:170;;;;-1:-1:-1;;;38953:170:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38446:689;;39151:11;39147:93;;39179:28;39195:4;39201:2;39205:1;39179:15;:28::i;:::-;39222:7;;;;39147:93;39252:28;39283:24;39301:4;39283:9;:24::i;:::-;39386:18;;39433:11;;39252:55;;-1:-1:-1;39349:55:0;;;;39433:11;;:37;;;;-1:-1:-1;39462:8:0;;-1:-1:-1;;;39462:8:0;;;;39461:9;39433:37;:86;;;;-1:-1:-1;;;;;;39488:31:0;;;;;;:25;:31;;;;;;;;39487:32;39433:86;:126;;;;;39536:23;39433:126;39415:283;;;39586:8;:15;;-1:-1:-1;;;;39586:15:0;-1:-1:-1;;;39586:15:0;;;39616:39;39634:20;39616:17;:39::i;:::-;39670:8;:16;;-1:-1:-1;;;;39670:16:0;;;39415:283;39726:8;;;-1:-1:-1;;;;;39749:25:0;;39710:12;39749:25;;;:19;:25;;;;;;;;39726:8;-1:-1:-1;;;39726:8:0;;;;;39725:9;;39749:25;;:52;;-1:-1:-1;;;;;;39778:23:0;;;;;;:19;:23;;;;;;;;39749:52;:65;;;-1:-1:-1;39806:8:0;;-1:-1:-1;;;39806:8:0;;;;39805:9;39749:65;39745:113;;;-1:-1:-1;39841:5:0;39745:113;39874:7;39870:590;;;39898:12;39913:30;39939:3;39913:21;39924:9;;39913:6;:10;;:21;;;;:::i;:::-;:25;;:30::i;:::-;39898:45;;39988:7;:5;:7::i;:::-;-1:-1:-1;;;;;39980:15:0;:4;-1:-1:-1;;;;;39980:15:0;;;:57;;;;-1:-1:-1;;;;;;40016:21:0;;40032:4;40016:21;;39980:57;:280;;;;-1:-1:-1;;;;;;40060:31:0;;;;;;:25;:31;;;;;;;;;:85;;-1:-1:-1;;;;;;40116:29:0;;;;;;:25;:29;;;;;;;;40060:85;:143;;;-1:-1:-1;;;;;;40170:33:0;;;;;;:27;:33;;;;;;;;40060:143;:199;;;-1:-1:-1;;;;;;40228:31:0;;;;;;:27;:31;;;;;;;;40060:199;40058:202;39980:280;39958:394;;;40302:34;40332:3;40302:25;40313:13;;40302:6;:10;;:25;;;;:::i;:34::-;40295:41;;39958:394;40375:16;:6;40386:4;40375:10;:16::i;:::-;40366:25;;40406:42;40422:4;40436;40443;40406:15;:42::i;:::-;39870:590;;40472:33;40488:4;40494:2;40498:6;40472:15;:33::i;:::-;40617:15;;-1:-1:-1;;;;;40617:15:0;:26;40652:4;40659:15;40652:4;40659:9;:15::i;:::-;40617:58;;;;;;;;;;;;;-1:-1:-1;;;;;40617:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40600:96;40710:15;;-1:-1:-1;;;;;40710:15:0;:26;40745:2;40750:13;40745:2;40750:9;:13::i;:::-;40710:54;;;;;;;;;;;;;-1:-1:-1;;;;;40710:54:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;40706:70;37580:3203;;;;;;;;;:::o;2399:224::-;2519:7;2555:12;2547:6;;;;2539:29;;;;-1:-1:-1;;;2539:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2591:5:0;;;2399:224::o;9908:314::-;-1:-1:-1;;;;;9992:21:0;;9984:65;;;;;-1:-1:-1;;;9984:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10075:12;;:24;;10092:6;10075:16;:24::i;:::-;10060:12;:39;-1:-1:-1;;;;;10131:18:0;;:9;:18;;;;;;;;;;;:30;;10154:6;10131:22;:30::i;:::-;-1:-1:-1;;;;;10110:18:0;;:9;:18;;;;;;;;;;;:51;;;;10177:37;;;;;;;10110:18;;:9;;-1:-1:-1;;;;;;;;;;;10177:37:0;;;;;;;;;9908:314;;:::o;28133:440::-;-1:-1:-1;;;;;28238:31:0;;;;;;:25;:31;;;;;;;;:40;;;;;;;28216:146;;;;-1:-1:-1;;;28216:146:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28373:31:0;;;;;;:25;:31;;;;;:39;;-1:-1:-1;;28373:39:0;;;;;;;;;;;;28423:87;;28449:15;;:49;;;-1:-1:-1;;;28449:49:0;;-1:-1:-1;;;;;28449:49:0;;;;;;;:15;:49;;;;;;;;:15;;;:36;;:49;;;;;:15;;:49;;;;;;:15;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28423:87;28525:40;;;;;;-1:-1:-1;;;;;28525:40:0;;;;;;;;28133:440;;:::o;2255:136::-;2313:7;2340:43;2344:1;2347;2340:43;;;;;;;;;;;;;;;;;:3;:43::i;34074:1897::-;-1:-1:-1;;;;;34230:20:0;;34185:23;34230:20;;;:13;:20;;;;;;;;34226:1738;;;-1:-1:-1;;;;;34288:18:0;;34267;34288;;;:11;:18;;;;;;34338:8;34325:21;;34321:1632;;;34385:1;34367:19;;34321:1632;;;34425:7;34412:10;:20;34408:1545;;;34471:25;34493:2;34471:17;:10;34486:1;34471:14;:17::i;:25::-;34453:43;;34408:1545;;;34535:7;34522:10;:20;34518:1435;;;34581:27;34604:3;34581:18;:10;34596:2;34581:14;:18::i;34518:1435::-;34647:8;34634:10;:21;34630:1323;;;34694:27;34717:3;34694:18;:10;34709:2;34694:14;:18::i;34630:1323::-;34760:8;34747:10;:21;34743:1210;;;34807:27;34830:3;34807:18;:10;34822:2;34807:14;:18::i;34743:1210::-;34873:8;34860:10;:21;34856:1097;;;34920:27;34943:3;34920:18;:10;34935:2;34920:14;:18::i;34856:1097::-;34986:8;34973:10;:21;34969:984;;;35033:27;35056:3;35033:18;:10;35048:2;35033:14;:18::i;34969:984::-;35099:8;35086:10;:21;35082:871;;;35146:17;:10;35161:1;35146:14;:17::i;35082:871::-;35202:8;35189:10;:21;35185:768;;;35249:27;35272:3;35249:18;:10;35264:2;35249:14;:18::i;35185:768::-;35315:8;35302:10;:21;35298:655;;;35362:27;35385:3;35362:18;:10;35377:2;35362:14;:18::i;35298:655::-;35428:8;35415:10;:21;35411:542;;;35475:27;35498:3;35475:18;:10;35490:2;35475:14;:18::i;35411:542::-;35541:8;35528:10;:21;35524:429;;;35588:27;35611:3;35588:18;:10;35603:2;35588:14;:18::i;35524:429::-;35654:8;35641:10;:21;35637:316;;;35701:27;35724:3;35701:18;:10;35716:2;35701:14;:18::i;35637:316::-;35767:8;35754:10;:21;35750:203;;;35814:27;35837:3;35814:18;:10;35829:2;35814:14;:18::i;35750:203::-;35880:8;35867:10;:21;35863:90;;;35927:10;35909:28;;35863:90;34226:1738;34074:1897;;;;:::o;41742:3707::-;41877:13;;-1:-1:-1;;;41877:13:0;;;;:46;;;;-1:-1:-1;;;;;;41894:29:0;;;;;;:25;:29;;;;;;;;41877:46;41873:222;;;42005:15;41966:13;:27;41980:12;:10;:12::i;:::-;-1:-1:-1;;;;;41966:27:0;-1:-1:-1;;;;;41966:27:0;;;;;;;;;;;;;41996:5;41966:35;:54;;41940:143;;;;;-1:-1:-1;;;41940:143:0;;;;;;;;;;;;-1:-1:-1;;;41940:143:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;42111:29:0;;;;;;:25;:29;;;;;;;;42107:358;;;42200:15;42161:13;:27;42175:12;:10;:12::i;:::-;-1:-1:-1;;;;;42161:27:0;-1:-1:-1;;;;;42161:27:0;;;;;;;;;;;;;42191:5;42161:35;:54;42157:235;;42280:6;42236:26;:40;42263:12;:10;:12::i;:::-;-1:-1:-1;;;;;42236:40:0;;;;;;;;;;;;-1:-1:-1;42236:40:0;:50;;;;;;;42157:235;;;42370:6;42327:26;:40;42354:12;:10;:12::i;:::-;-1:-1:-1;;;;;42327:40:0;;;;;;;;;;;;-1:-1:-1;42327:40:0;:49;42157:235;42438:15;42408:13;:27;42422:12;:10;:12::i;:::-;-1:-1:-1;;;;;42408:27:0;;;;;;;;;;;;-1:-1:-1;42408:27:0;:45;42107:358;42481:18;;-1:-1:-1;;;42481:18:0;;;;42477:235;;;42607:24;;42542:26;:40;42569:12;:10;:12::i;:::-;-1:-1:-1;;;;;42542:40:0;-1:-1:-1;;;;;42542:40:0;;;;;;;;;;;;;:89;;42516:184;;;;-1:-1:-1;;;42516:184:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42728:12;;;;;;;42724:161;;;-1:-1:-1;;;;;42761:21:0;;42777:4;42761:21;42757:117;;42821:11;;42811:6;:21;;42803:55;;;;;-1:-1:-1;;;42803:55:0;;;;;;;;;;;;-1:-1:-1;;;42803:55:0;;;;;;;;;;;;;;;42901:8;;-1:-1:-1;;;42901:8:0;;;;42897:483;;;-1:-1:-1;;;;;42948:21:0;;42964:4;42948:21;;;;:61;;-1:-1:-1;;;;;;42990:19:0;;43004:4;42990:19;;42948:61;:114;;;;-1:-1:-1;;;;;;43031:31:0;;;;;;:27;:31;;;;;;;;43030:32;42948:114;:165;;;;-1:-1:-1;;;;;;43084:29:0;;;;;;:25;:29;;;;;;;;43083:30;42948:165;42926:443;;;43198:7;:21;43206:12;:10;:12::i;:::-;-1:-1:-1;;;;;43198:21:0;-1:-1:-1;;;;;43198:21:0;;;;;;;;;;;;;43222:10;43198:34;43178:15;:55;;43148:147;;;;;-1:-1:-1;;;43148:147:0;;;;;;;;;;;;-1:-1:-1;;;43148:147:0;;;;;;;;;;;;;;;43338:15;43314:7;:21;43322:12;:10;:12::i;:::-;-1:-1:-1;;;;;43314:21:0;;;;;;;;;;;;-1:-1:-1;43314:21:0;:39;42926:443;43396:12;;-1:-1:-1;;;43396:12:0;;;;43392:1263;;;-1:-1:-1;;;;;43447:31:0;;;;;;:25;:31;;;;;;;;:84;;;;-1:-1:-1;;;;;;43500:31:0;;;;;;:27;:31;;;;;;;;43499:32;43447:84;:124;;;;-1:-1:-1;;;;;;43552:19:0;;43566:4;43552:19;;43447:124;:166;;;;-1:-1:-1;;;;;;43592:21:0;;43608:4;43592:21;;43447:166;43425:263;;;43656:9;-1:-1:-1;;;;;43656:15:0;;;43648:24;;;;;;43722:20;;43745:1;43722:24;43706:12;:40;43702:942;;43781:9;43767:24;;;;:13;:24;;;;;:31;;-1:-1:-1;;43767:31:0;43794:4;43767:31;;;-1:-1:-1;;;;;43821:17:0;;;;;;:36;;-1:-1:-1;43842:9:0;-1:-1:-1;;;;;43842:15:0;;;;43821:36;43817:138;;;43882:15;;:53;;;-1:-1:-1;;;43882:53:0;;43919:9;43882:53;;;;:15;:53;;;;;;-1:-1:-1;;;;;43882:15:0;;;;:36;;:53;;;;;:15;;:53;;;;;;;;:15;;:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43817:138;-1:-1:-1;;;;;44000:31:0;;;;;;:25;:31;;;;;;;;43999:32;:91;;;;-1:-1:-1;;;;;;44057:33:0;;;;;;:27;:33;;;;;;;;44056:34;43999:91;:137;;;;-1:-1:-1;;;;;;44115:21:0;;44131:4;44115:21;;43999:137;43973:323;;;-1:-1:-1;;;;;44179:19:0;;;;;;;:13;:19;;;;;;:26;;-1:-1:-1;;44179:26:0;44201:4;44179:26;;;;;;44228:15;;:48;;-1:-1:-1;;;44228:48:0;;;;;;;;;;;;;;;;;;:15;;;:36;;:48;;;;;44179:19;44228:48;;;;;;44179:19;44228:15;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43973:323;-1:-1:-1;;;;;44343:29:0;;;;;;:25;:29;;;;;;;;44342:30;:87;;;;-1:-1:-1;;;;;;44398:31:0;;;;;;:27;:31;;;;;;;;44397:32;44342:87;:131;;;;-1:-1:-1;;;;;;44454:19:0;;44468:4;44454:19;;44342:131;44316:313;;;-1:-1:-1;;;;;44516:17:0;;;;;;;:13;:17;;;;;;:24;;-1:-1:-1;;44516:24:0;44536:4;44516:24;;;;;;44563:15;;:46;;-1:-1:-1;;;44563:46:0;;;;;;;;;;;;;;;;;;:15;;;:36;;:46;;;;;44516:17;44563:46;;;;;;44516:17;44563:15;:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44316:313;44671:18;;-1:-1:-1;;;44671:18:0;;;;44667:338;;;-1:-1:-1;;;;;44728:31:0;;;;;;:25;:31;;;;;;;;:82;;;;-1:-1:-1;44794:15:0;;-1:-1:-1;;;;;44780:30:0;;;44794:15;;44780:30;;44728:82;:122;;;;-1:-1:-1;;;;;;44831:19:0;;44845:4;44831:19;;44728:122;44706:288;;;44885:15;44903:13;44913:2;44903:9;:13::i;:::-;44966:11;;44885:31;;-1:-1:-1;44943:19:0;44885:31;44955:6;44943:11;:19::i;:::-;:34;;44935:43;;;;;;44706:288;;45021:11;;-1:-1:-1;;;45021:11:0;;;;45017:425;;;-1:-1:-1;;;;;45053:21:0;;45069:4;45053:21;;;;:44;;-1:-1:-1;;;;;;45078:19:0;;45092:4;45078:19;;45053:44;45049:382;;;-1:-1:-1;;;;;45148:31:0;;;;;;:25;:31;;;;;;;;;:89;;-1:-1:-1;;;;;;45208:29:0;;;;;;:25;:29;;;;;;;;45148:89;:151;;;-1:-1:-1;;;;;;45266:33:0;;;;;;:27;:33;;;;;;;;45148:151;:211;;;-1:-1:-1;;;;;;45328:31:0;;;;;;:27;:31;;;;;;;;45148:211;45118:297;;;;;-1:-1:-1;;;45118:297:0;;;;;;;;;;;;-1:-1:-1;;;45118:297:0;;;;;;;;;;;;;;9352:548;-1:-1:-1;;;;;9492:20:0;;9484:70;;;;-1:-1:-1;;;9484:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9573:23:0;;9565:71;;;;-1:-1:-1;;;9565:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9667:108;9703:6;9667:108;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9667:17:0;;:9;:17;;;;;;;;;;;;:108;:21;:108::i;:::-;-1:-1:-1;;;;;9647:17:0;;;:9;:17;;;;;;;;;;;:128;;;;9809:20;;;;;;;:32;;9834:6;9809:24;:32::i;:::-;-1:-1:-1;;;;;9786:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;9857:35;;;;;;;9786:20;;9857:35;;;;-1:-1:-1;;;;;;;;;;;9857:35:0;;;;;;;;9352:548;;;:::o;40791:943::-;40853:18;40874:39;40903:9;;40874:24;40885:12;;40874:6;:10;;:24;;;;:::i;:39::-;40853:60;-1:-1:-1;40924:20:0;40947:17;40853:60;40962:1;40947:14;:17::i;:::-;40924:40;-1:-1:-1;40975:20:0;40998:24;:6;40924:40;40998:10;:24::i;:::-;40975:47;-1:-1:-1;41054:21:0;41086:30;40975:47;41086:16;:30::i;:::-;41127:19;41149:37;:21;41175:10;41149:25;:37::i;:::-;41127:59;;41197:17;41232:51;41281:1;41232:44;41266:9;;41232:29;41248:12;;41232:11;:15;;:29;;;;:::i;:51::-;41197:97;;41305:21;41344:49;41391:1;41344:42;41376:9;;41344:27;41360:10;;41344:11;:15;;:27;;;;:::i;:49::-;41415:8;;:32;;41305:99;;-1:-1:-1;;;;41415:8:0;;-1:-1:-1;;;;;41415:8:0;;:32;;;;;41305:99;;41415:32;;;;41305:99;41415:8;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41458:8:0;;:32;;-1:-1:-1;;;;;41458:8:0;;;;:32;;;;;41476:13;;41458:8;:32;:8;:32;41476:13;41458:8;:32;;;;;;;;;;;;;;;;;;;;-1:-1:-1;41501:8:0;;:32;;-1:-1:-1;;;;;41501:8:0;;;;:32;;;;;41519:13;;41501:8;:32;:8;:32;41519:13;41501:8;:32;;;;;;;;;;;;;;;;;;;;;41544:37;41557:12;41571:9;41544:12;:37::i;:::-;41651:20;;41615:21;;41651:20;;;;;41647:80;;;41688:27;41702:12;41688:13;:27::i;2885:132::-;2943:7;2970:39;2974:1;2977;2970:39;;;;;;;;;;;;;-1:-1:-1;;;2970:39:0;;;:3;:39::i;46051:453::-;46141:16;;;46155:1;46141:16;;;;;;;;46117:21;;46141:16;;;;;;;;;;-1:-1:-1;46141:16:0;46117:40;;46186:4;46168;46173:1;46168:7;;;;;;;;-1:-1:-1;;;;;46168:23:0;;;:7;;;;;;;;;:23;46212:4;;46202:7;;46212:4;;;46202;;46212;;46202:7;;;;;;-1:-1:-1;;;;;46202:14:0;;;:7;;;;;;;;;:14;46259:15;;46227:62;;46244:4;;46259:15;46277:11;46227:8;:62::i;:::-;46300:15;;:196;;-1:-1:-1;;;46300:196:0;;;;;;;;:15;:196;;;;;;46450:4;46300:196;;;;;;46470:15;46300:196;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46300:15:0;;;;:66;;46381:11;;46423:4;;46450;46470:15;46300:196;;;;;;;;;;;;;;;;:15;:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45683:360;45796:15;;45764:62;;45781:4;;-1:-1:-1;;;;;45796:15:0;45814:11;45764:8;:62::i;:::-;45837:15;;-1:-1:-1;;;;;45837:15:0;:31;45876:9;45909:4;45929:11;45837:15;;45987:7;:5;:7::i;:::-;46009:15;45837:198;;;;;;;;;;;;;-1:-1:-1;;;;;45837:198:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;45837:198:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;45683:360:0:o;45457:218::-;45545:15;;45537:51;;45519:12;;-1:-1:-1;;;;;45545:15:0;;45574:9;;45519:12;45537:51;45519:12;45537:51;45574:9;45545:15;45537:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;45518:70;;;45603:7;45599:69;;;45632:24;;;;;;;;;;;;;;;;;45457:218;;:::o;3025:223::-;3145:7;3180:12;3173:5;3165:28;;;;-1:-1:-1;;;3165:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3204:9;3220:1;3216;:5;;;;;;;3025:223;-1:-1:-1;;;;;3025:223:0:o
Swarm Source
ipfs://cc6ae6e3160f34a884cb460546af28fe4bde6b5e2c8f5a9472fcdbc93abcb5d3
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.00
Net Worth in ETH
0
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.