ERC-20
Overview
Max Total Supply
1,000,000,000 BANKD
Holders
96
Total Transfers
-
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
DoggoBankToken
Compiler Version
v0.8.17+commit.8df45f5f
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-16 */ // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router01.sol pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // File: @uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // File: @uniswap/v2-core/contracts/interfaces/IUniswapV2Factory.sol pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address from, address to, uint256 amount ) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.8.0-rc.1) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * The default value of {decimals} is 18. To select a different value for * {decimals} you should overload it. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the value {ERC20} uses, unless this function is * overridden; * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom( address from, address to, uint256 amount ) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer( address from, address to, uint256 amount ) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ 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); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance( address owner, address spender, uint256 amount ) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer( address from, address to, uint256 amount ) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer( address from, address to, uint256 amount ) internal virtual {} } // File: dogebank.sol //DoggoBank | DogeFund © 2023 //A Decentralised P2P Bank - Decentralised Project Funding - Decentalised Crypto Loans //website: https://doggobank.app //telegram: https://t.me/doggobankportal //twitter: https://twitter.com/doggobank pragma solidity ^0.8.4; contract DoggoBankToken is ERC20, Ownable { modifier admin(){ require(msg.sender == _adminWallet); _; } modifier lockSwap { require(!_inSwap); _inSwap = true; _; _inSwap = false; } modifier liquidityAdd { _inLiquidityAdd = true; _; _inLiquidityAdd = false; } modifier reentrant { require(!_inTransfer); _inTransfer = true; _; _inTransfer = false; } modifier OnlyCharity(){ require(msg.sender == _charityBeneficiary); _; } modifier onlyRBWcontract(){ require(msg.sender == _rebalancingContract); _; } uint public _buyRate = 5;//adjustable uint public _sellRate = 20;//adjustable uint public _taxLimit = 30;//total taxes we can tax uint public _stakedays = 30; uint256 public _maxHoldings = 18000000 * 1e18; uint256 public _diceStakeRequirement; uint256 public _feeTokens; uint256 private _tradingStart; uint256 public _tradingStartBlock; uint256 public _totalSupply; uint256 public _autoLPadded; uint256 public _charityPool; uint256 public _totalStaked; uint256 public _ethRewardBasis; uint256 public _netRewardClaims; uint256 public _diceGameReflections; uint256 public _totalBeneficiaryAssigns; uint256 public _beneficiaryReward; address public _pairAddress; address public _adminWallet; address public _rebalancingContract; address payable public _bornFireWallet; address payable public _marketingWallet; address payable public _developmentWallet; address payable public _charityBeneficiary; address constant public _burnAddress = 0x000000000000000000000000000000000000dEaD; IUniswapV2Router02 internal _router = IUniswapV2Router02(address(0)); bool public tradingOpen; bool public reflectMode; bool public buyBackMode = false; bool public autoLPMode = true; bool internal _inSwap = false; bool internal _inTransfer = false; bool internal _inLiquidityAdd = false; mapping(address => bool) private _rewardExclude; mapping(address => bool) private _bot; mapping(address => bool) private _stealthLauncher; mapping(address => bool) public _taxExcluded; mapping(address => uint) public _playCount; mapping(address => uint) public _myplaysTotal; mapping(address => uint256) public _lastPlay; mapping(address => uint256) public _lastWin; mapping(address => uint256) public _dicewinnings; mapping(address => uint256) public _dicelosses; mapping(address => uint256) private _tradeBlock; mapping(address => uint256) private _balances; mapping(address => uint256) public _lastRewardBasis; mapping(address => uint256) public _netEthRewardedWallet; mapping(address => uint256) public _netRewardsmyDonors; mapping(address => uint256) public _netRewardsTomyBE; mapping(address => address) public _claimBeneficiary; mapping(address => acptStruct) private _acptMap; mapping(address => myBenefactors) private _privateList; mapping(address => mystakesStruct) private _stakeMap; struct acptStruct { uint256 tokenscost; uint256 tokens; } struct mystakesStruct { uint256 amount; uint256 duration; uint256 expiry; } event ClaimReflection(address indexed claimer, uint256 reflection); event BuyBack(address indexed torcher, uint256 ethbuy, uint256 amount); event Donation(address indexed charity, uint256 auctioned); event autoLiquidity(uint256 indexed tokens, uint256 time); event DiceRoll(address indexed player, uint256 pulled); event Staked(address indexed staker, uint256 indexed expiry, uint256 tokens); event Unstaked(address indexed staker, uint256 tokens); constructor(address payable developmentAddr, address payable marketingAddr) ERC20("Doggo Bank", "BANKD"){ _marketingWallet = marketingAddr; _developmentWallet = developmentAddr; _addTaxExcluded(owner()); _addTaxExcluded(address(this)); _addTaxExcluded(_burnAddress); _addTaxExcluded(marketingAddr); _addTaxExcluded(developmentAddr); //Uniswap IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); _pairAddress = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this),_uniswapV2Router.WETH()); _router = _uniswapV2Router; } function addLiquidity() public payable onlyOwner() liquidityAdd { uint256 tokens = 1000000000 * 1e18; uint256 LPtokens = (tokens * 90) / 100; uint256 teamTokens = tokens - LPtokens; _mint(address(this), LPtokens); _mint(_marketingWallet, teamTokens); _approve(address(this), address(_router), LPtokens); _router.addLiquidityETH{value: msg.value}( address(this),LPtokens,0,0,owner(),block.timestamp ); } function accidentalEthSweep() public payable admin(){ uint256 accidentalETH = address(this).balance - _ethRewardBasis - _charityPool - _diceGameReflections; _paymentETH(_marketingWallet, accidentalETH); } function circulatingSupply() public view returns (uint256) { return _totalSupply - balanceOf(_burnAddress); } function acpt(address account) public view returns (uint256) { return _acptMap[account].tokenscost / _acptMap[account].tokens; } function price() public view returns (uint256 tokenprice) { IUniswapV2Pair pair = IUniswapV2Pair(_pairAddress); (uint reserveA, uint reserveB,) = pair.getReserves(); //tendency to switch pair: ETH/TOKEN | TOKEN/ETH if(reserveA > reserveB){//tokens in slot A tokenprice = (reserveB * (10 ** uint256(18))) / reserveA; }else{//tokens in slot B tokenprice = (reserveA * (10 ** uint256(18))) / reserveB; } return tokenprice; } function fetchSwapAmounts(uint256 amountIn, uint swap) public view returns(uint256){ address[] memory path = new address[](2); if(swap == 1){//buy path[0] = _router.WETH(); path[1] = address(this); }else if(swap == 0){//sell path[0] = address(this); path[1] = _router.WETH(); } uint[] memory amountsOut = _router.getAmountsOut(amountIn, path); return amountsOut[amountsOut.length - 1]; } //taxes function isTaxExcluded(address account) public view returns (bool) { return _taxExcluded[account]; } function _addTaxExcluded(address account) internal { _taxExcluded[account] = true; } function addExcluded(address account) public admin() { _taxExcluded[account] = true; } function addExcludedArray(address[] calldata accounts) public admin() { for(uint256 i = 0; i < accounts.length; i++) { _taxExcluded[accounts[i]] = true; } } //bot accounts on uniswap trading from router function isBot(address account) public view returns (bool) { return _bot[account]; } function _addBot(address account) internal { _bot[account] = true; _rewardExclude[account] = true; } function addBot(address account) public admin() { if(account == _pairAddress){revert();} _addBot(account); } function removeBot(address account) public admin() { _bot[account] = false; _rewardExclude[account] = false; } //token balances function _addBalance(address account, uint256 amount) internal { _balances[account] = _balances[account] + amount; } function _subtractBalance(address account, uint256 amount) internal { _balances[account] = _balances[account] - amount; } //------------------------------------------------------------------ //Transfer overwrites erc-20 method. function _transfer( address sender, address recipient, uint256 amount ) internal override { if (isTaxExcluded(sender) || isTaxExcluded(recipient)) { if (sender == _marketingWallet){ require(block.timestamp > (_tradingStart + (1 * 60 * 60 * 24 * 30)),"team tokens locked"); } _rawTransfer(sender, recipient, amount); return; } //catch if(recipient == _pairAddress && _tradeBlock[sender] == block.number){ _addBot(sender); } //stealth launch check if (!_stealthLauncher[recipient]) { if(block.number <= _tradingStartBlock && sender == _pairAddress){ _addBot(recipient); } require(_tradingStartBlock != 0 && block.number >= _tradingStartBlock); } //security check require(!isBot(sender) && !isBot(recipient)); require(amount <= _maxHoldings); if (!_inSwap && _feeTokens > 0 && recipient == _pairAddress) { _swap(_feeTokens); } uint256 send = amount; uint256 selltaxtokens; uint256 buytaxtokens; bool buyCostAvg = false; // Buy if (sender == _pairAddress) { (send,buytaxtokens) = _getTax(amount, _buyRate); buyCostAvg = true; } // Sell if (recipient == _pairAddress) { (send,selltaxtokens) = _getTax(amount, _sellRate); } if(buyCostAvg){ _acptMap[recipient].tokenscost += send * price(); _acptMap[recipient].tokens += send; } //track if(sender == _pairAddress){ _tradeBlock[recipient] = block.number; } //transfer _rawTransfer(sender, recipient, send); //take sell taxrevenue if(selltaxtokens>0){ _takeSellTax(sender, selltaxtokens); } //take buy tax if(buytaxtokens>0){ _takeBuyTax(sender, buytaxtokens); } } //liquidate fee tokens on each sell tx function _swap(uint256 amountSwap) internal lockSwap { uint256 tokensToSwap; uint256 amountForLiquidity; uint256 actualLiquidity; uint baseRate; uint256 toggleETH; if(autoLPMode == true){ amountForLiquidity = (amountSwap * 10) / 100; actualLiquidity = amountForLiquidity / 2; tokensToSwap = amountSwap - actualLiquidity; baseRate = 90; }else{ tokensToSwap = amountSwap; baseRate = 100; } address[] memory path = new address[](2); path[0] = address(this); path[1] = _router.WETH(); _approve(address(this), address(_router), tokensToSwap); uint256 balanceB4 = address(this).balance; _router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokensToSwap, 0, path, address(this), block.timestamp ); uint256 swappedETH = address(this).balance - balanceB4; //at the flip of a switch: toggle between buyback mode & auto liquidity mode per Tx if(autoLPMode){ toggleETH = (actualLiquidity * swappedETH) / tokensToSwap; _autoLPadded += toggleETH; _addLiquidity(actualLiquidity, toggleETH); } _feeTokens -= amountSwap; swappedETH -= toggleETH; //allocate funds, less the Auto LP amount if any..Base rate makes sure we take the whole percentage (90/90 or 100/100) uint256 marketingETH = (swappedETH * 60) / baseRate; uint256 reflectionsETH = (swappedETH * 25) / baseRate; uint256 charityETH = (swappedETH * 5) / baseRate; //buy backs if activated.. if baseRate is 100% then theres balance ETH from the above split uint256 buybackETH = swappedETH - marketingETH - reflectionsETH - charityETH; if(buyBackMode){ path[0] = _router.WETH(); path[1] = address(this); uint deadline = block.timestamp + 500; uint[] memory tokens_ = _router.swapExactETHForTokens{value:buybackETH}(0, path, payable(_burnAddress), deadline); emit BuyBack(address(this), buybackETH, (tokens_[tokens_.length - 1])); } //assign rewards & charity //toggle also reflect mode (takes both charity to boost reflections you souless degens) if(reflectMode){ reflectionsETH += charityETH; charityETH = 0; } _ethRewardBasis += (reflectionsETH * 90)/100; _diceGameReflections += (reflectionsETH * 10)/100; _charityPool += charityETH; //Split between marketing and business developement _paymentETH(_marketingWallet, marketingETH/2); _paymentETH(_developmentWallet, marketingETH/2); } //auto liquidity function _addLiquidity(uint256 tokens, uint256 liquidityETH) internal{ _approve(address(this), address(_router), tokens); (,,uint256 tokensAdded_) = _router.addLiquidityETH{value: liquidityETH}( address(this),tokens,0,0,_adminWallet,block.timestamp ); emit autoLiquidity(tokensAdded_, block.timestamp); } //bonfire/buy backs function bonfireEvent(uint swapdeadline) public payable returns (uint256) { address[] memory path = new address[](2); path[0] = _router.WETH(); path[1] = address(this); uint deadline = block.timestamp + swapdeadline; uint[] memory tokens_ = _router.swapExactETHForTokens{value: msg.value}(0, path, payable(_burnAddress), deadline); uint256 outputTokenCount = uint256(tokens_[tokens_.length - 1]); if(outputTokenCount >0){ emit BuyBack(msg.sender, msg.value, outputTokenCount); }else{revert();} return outputTokenCount; } //charity withdrawal function charityWithdraw() public OnlyCharity() reentrant{ require(_charityPool > 0,"no charity money"); uint256 donation = _charityPool; _charityPool -= donation; _paymentETH(_charityBeneficiary, donation); emit Donation(msg.sender, donation); } //reflections struct myBenefactors { address[] myDonors; mapping(address => uint) myDonorsIndex; } function addReflectionETH() public payable { require(msg.value > 0); _ethRewardBasis += msg.value; } function addDicePrize() public payable { require(msg.value > 0); _diceGameReflections += msg.value; } function addBeneficiary(address account) public{ require(!isBot(msg.sender) && !isBot(account)); require(_claimBeneficiary[msg.sender] != account, "Already added as Donor"); //adding self as donor to beneficiarys private storage _claimBeneficiary[msg.sender] = account;//who is wallets beneficiary..1 max _privateList[account].myDonors.push(msg.sender); uint index = _privateList[account].myDonors.length; //store key _privateList[account].myDonorsIndex[msg.sender] = index;//add self _totalBeneficiaryAssigns += 1; } function removeBeneficiary(address account) public{ require(_privateList[account].myDonorsIndex[msg.sender] != 0,"you are not in donors list!"); //removing beneficiary by restoring myself _claimBeneficiary[msg.sender] = msg.sender; uint index = _privateList[account].myDonorsIndex[msg.sender]; //remove myself as donor from his array of donors uint lastIndex = _privateList[account].myDonors.length; _privateList[account].myDonors[index - 1] = _privateList[account].myDonors[lastIndex]; _privateList[account].myDonors.pop(); _privateList[account].myDonorsIndex[msg.sender] = 0; //reset _totalBeneficiaryAssigns -= 1; } function viewBenefactors() public view returns(address[] memory){ return _privateList[msg.sender].myDonors; } function currentDonorRewards(address addr) public view returns(uint n, uint256 netreward) { n = _privateList[addr].myDonors.length; for (uint i = 0; i < n; i++) { //sum the rewards netreward += currentRewardForWallet(_privateList[addr].myDonors[i]); if(i == n-1){break;} } return (n, netreward); } function currentRewardForWallet(address addr) public view returns(uint256) { uint256 ethChange = _ethRewardBasis - _lastRewardBasis[addr]; return (ethChange * (balanceOf(addr) + _stakeMap[addr].amount)) / (circulatingSupply() - balanceOf(_pairAddress)); } function claimReflection() public reentrant(){ require(!_rewardExclude[msg.sender]);//covers bots uint n = _privateList[msg.sender].myDonors.length; uint256 netreward = currentRewardForWallet(msg.sender); if(n>0){ for (uint i = 0; i < n; i++) { address donor = _privateList[msg.sender].myDonors[i]; uint256 owed = currentRewardForWallet(donor); _netRewardsmyDonors[msg.sender] += owed; _netRewardsTomyBE[donor] += owed; netreward += owed; _beneficiaryReward += owed; _lastRewardBasis[donor] = _ethRewardBasis; //break if(i == n-1){break;} } } if(netreward>0){ _netRewardClaims += netreward; _netEthRewardedWallet[msg.sender] += netreward; _lastRewardBasis[msg.sender] = _ethRewardBasis; _paymentETH(msg.sender, netreward); emit ClaimReflection(msg.sender, netreward); } } // play Dice Game - stake to play and free to play but lose your reflections- have reflections bal to play - max four plays every 24hrs function playDiceGame() external reentrant() returns(uint number) { require(!_rewardExclude[msg.sender]); (uint256 stakedAmnt,,) = getStakeData(msg.sender); require(stakedAmnt >= _diceStakeRequirement,"stake required amount to play"); require(currentRewardForWallet(msg.sender)>0, "insufficient reflections."); require(block.timestamp - _lastPlay[msg.sender] > (1 * 60 * 60 * 24),"cooldown 24hrs");//covers even the first timers require(block.timestamp - _lastWin[msg.sender] > (1 * 60 * 60 * 24),"cooldown 24hrs"); _playCount[msg.sender] += 1; _myplaysTotal[msg.sender] += 1; //check count first..resets after 3rd play going to 4th...play limits are valid as reflections build per Tx if(_playCount[msg.sender] == 3){ _playCount[msg.sender] = 0; _lastPlay[msg.sender] = block.timestamp; loseReflections(msg.sender); } //proceeds if clear uint randomHash = uint(keccak256(abi.encodePacked(block.timestamp,block.difficulty,msg.sender))) % 6; if(randomHash == 0){randomHash += 1;} if(randomHash == 6){ pocketReflections(msg.sender); _lastWin[msg.sender] = block.timestamp; } emit DiceRoll(msg.sender, randomHash); return number; } function pocketReflections(address winner) internal { uint256 winnings = _diceGameReflections / 2; _diceGameReflections -= winnings; _dicewinnings[msg.sender] += winnings; _paymentETH(winner, winnings); } function loseReflections(address loser) internal { uint256 loss = currentRewardForWallet(loser); _lastRewardBasis[loser] = loss; _diceGameReflections += loss; _dicelosses[msg.sender] += loss; } //staking tokens function stakeTokens(uint256 tokens)public{ require(tokens > 0 && _stakedays > 0); require(msg.sender != owner() && !_rewardExclude[tx.origin] && !_rewardExclude[msg.sender]); uint256 expiration = block.timestamp + (1 * 60 * 60 * 24 * _stakedays); //update if(_stakeMap[msg.sender].amount > 0){//can add tokens whether expired or not _stakeMap[msg.sender].amount += tokens;//add to existing }else{ _stakeMap[msg.sender].amount = tokens; _stakeMap[msg.sender].duration = _stakedays; _stakeMap[msg.sender].expiry = expiration; } _totalStaked += tokens; _rawTransfer(msg.sender, address(this), tokens); emit Staked(msg.sender, expiration, tokens); } function unstake(uint256 amount) public{ require(_stakeMap[msg.sender].amount >= amount && amount > 0); require(_stakeMap[msg.sender].expiry < block.timestamp); //update _totalStaked -= amount; _stakeMap[msg.sender].amount -= amount; //send _rawTransfer(address(this), msg.sender, amount); emit Unstaked(msg.sender, amount); } //will also need this for the funding contract to check if funder is a staker in addition to holding tokens function getStakeData(address _address) view public returns (uint256, uint256, uint256) { return (_stakeMap[_address].amount, _stakeMap[_address].duration, _stakeMap[_address].expiry); } //we want the ability to toggle between buy backs mode or auto lp mode through voting, rebelancing wallet contract //vote and final vote triggers a call to this function. return amount to track allocation totals at specific periods //also toggle reflection mode through same method function rebalancingTrigger(bool toggle, uint what) external onlyRBWcontract returns(uint256 amount){ if(what == 1){ if(toggle){buyBackMode = true; autoLPMode = false;} if(!toggle){buyBackMode = false; autoLPMode = true;} } if(what ==2){ reflectMode = toggle; } return amount; } function _paymentETH(address receiver, uint256 amount) internal { (bool sent, ) = receiver.call{value: amount}(""); require(sent, "Failed to send Ether"); } function _getTax(uint256 amount, uint taxRate)internal view returns (uint256 send, uint256 tax){ tax = (amount * taxRate) / 100; send = amount - tax; assert(_sellRate + _buyRate < _taxLimit); assert(amount == send + tax); return(send, tax); } function _takeSellTax(address account, uint256 totalFees) internal { _feeTokens += totalFees; _rawTransfer(account, address(this), totalFees); } function _takeBuyTax(address sender, uint256 totalFees) internal { _feeTokens += totalFees; _rawTransfer(sender, address(this), totalFees); } //setters function toggleBuyBackAutoLP(bool buyback, bool autoLP) external admin(){ require(buyback != autoLP,"toggle please"); if(buyback){buyBackMode = true; autoLPMode = false;} if(autoLP){buyBackMode = false; autoLPMode = true;} } function toggleReflectMode(bool _reflectMode) external admin(){ reflectMode = _reflectMode; } function setAdmin(address payable _wallet) external onlyOwner(){ _adminWallet = _wallet; } function setDevelopment(address payable _wallet) external admin(){ _developmentWallet = _wallet; } function setMarketing(address payable _wallet) external admin(){ _marketingWallet = _wallet; } function setBornfire(address payable _wallet) external admin(){ _bornFireWallet = _wallet; } function setRebalancingContract(address _address) external admin(){ _rebalancingContract = _address; } function setCharityWallet(address payable _charityWallet) external admin(){ _charityBeneficiary = _charityWallet; } function setMaxHoldings(uint maxHoldingRate) external admin() { uint256 maxHoldings = (circulatingSupply() * maxHoldingRate) / 100; _maxHoldings = maxHoldings; } function setDiceStakeAmount(uint256 stakeRequired) external admin() { _diceStakeRequirement = stakeRequired; } function setStakeDays(uint stakeDays) external admin() { require(stakeDays >= 0); _stakedays = stakeDays; } function setTaxCap(uint rate) external admin() { _taxLimit = rate; } function setBuyTax(uint rate) external admin() { require( rate >= 0 && rate <= 10); _buyRate = rate; } function setSellTax(uint rate) external admin() { require( rate >= 0 && rate <= 10); _sellRate = rate; } function kickOff(uint256 blocknumber) external onlyOwner() { if(_tradingStart==0){ _tradingStartBlock = blocknumber; _tradingStart = block.timestamp; }else{} } function addStealthLaunch(address[] calldata accounts) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _stealthLauncher[accounts[i]] = true; } } function removeStealthLaunch(address[] calldata accounts) public onlyOwner { for(uint256 i = 0; i < accounts.length; i++) { _stealthLauncher[accounts[i]] = false; } } // modified from OpenZeppelin ERC20 function _rawTransfer( address sender, address recipient, uint256 amount ) internal { require(sender != address(0)); require(recipient != address(0)); uint256 senderBalance = balanceOf(sender); require(senderBalance >= amount); unchecked { _subtractBalance(sender, amount); } _addBalance(recipient, amount); emit Transfer(sender, recipient, amount); } function balanceOf(address account) public view virtual override returns (uint256){ return _balances[account]; } function totalSupply() public view override returns (uint256) { return _totalSupply; } function _mint(address account, uint256 amount) internal override { require(_totalSupply < 1000000001 * 1e18); _totalSupply += amount; _addBalance(account, amount); emit Transfer(address(0), account, amount); } receive() external payable {} }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address payable","name":"developmentAddr","type":"address"},{"internalType":"address payable","name":"marketingAddr","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"torcher","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethbuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"BuyBack","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"claimer","type":"address"},{"indexed":false,"internalType":"uint256","name":"reflection","type":"uint256"}],"name":"ClaimReflection","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"pulled","type":"uint256"}],"name":"DiceRoll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"charity","type":"address"},{"indexed":false,"internalType":"uint256","name":"auctioned","type":"uint256"}],"name":"Donation","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":true,"internalType":"address","name":"staker","type":"address"},{"indexed":true,"internalType":"uint256","name":"expiry","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Staked","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":"staker","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"Unstaked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"tokens","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"time","type":"uint256"}],"name":"autoLiquidity","type":"event"},{"inputs":[],"name":"_adminWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_autoLPadded","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_beneficiaryReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_bornFireWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_buyRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityBeneficiary","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_charityPool","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_claimBeneficiary","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_developmentWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_diceGameReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_diceStakeRequirement","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dicelosses","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dicewinnings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_ethRewardBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_feeTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastPlay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastRewardBasis","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastWin","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxHoldings","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_myplaysTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_netEthRewardedWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_netRewardClaims","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_netRewardsTomyBE","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_netRewardsmyDonors","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_pairAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_playCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_rebalancingContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sellRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_stakedays","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_taxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalBeneficiaryAssigns","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tradingStartBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accidentalEthSweep","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"acpt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addDicePrize","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addExcludedArray","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidity","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"addReflectionETH","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"addStealthLaunch","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":[{"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":[],"name":"autoLPMode","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":"uint256","name":"swapdeadline","type":"uint256"}],"name":"bonfireEvent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"buyBackMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"charityWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"currentDonorRewards","outputs":[{"internalType":"uint256","name":"n","type":"uint256"},{"internalType":"uint256","name":"netreward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"currentRewardForWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountIn","type":"uint256"},{"internalType":"uint256","name":"swap","type":"uint256"}],"name":"fetchSwapAmounts","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"getStakeData","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"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":"account","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isTaxExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"blocknumber","type":"uint256"}],"name":"kickOff","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"playDiceGame","outputs":[{"internalType":"uint256","name":"number","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"price","outputs":[{"internalType":"uint256","name":"tokenprice","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"},{"internalType":"uint256","name":"what","type":"uint256"}],"name":"rebalancingTrigger","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reflectMode","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBeneficiary","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"removeBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"name":"removeStealthLaunch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setBornfire","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_charityWallet","type":"address"}],"name":"setCharityWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setDevelopment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakeRequired","type":"uint256"}],"name":"setDiceStakeAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_wallet","type":"address"}],"name":"setMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxHoldingRate","type":"uint256"}],"name":"setMaxHoldings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setRebalancingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"stakeDays","type":"uint256"}],"name":"setStakeDays","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setTaxCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"stakeTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"buyback","type":"bool"},{"internalType":"bool","name":"autoLP","type":"bool"}],"name":"toggleBuyBackAutoLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_reflectMode","type":"bool"}],"name":"toggleReflectMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"viewBenefactors","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405260056006556014600755601e60088190556009556a0ee3a5f48a68b552000000600a55601f80547fffffffffff0000000000ffff000000000000000000000000000000000000000016600160b81b1790553480156200006257600080fd5b5060405162004b4e38038062004b4e83398101604081905262000085916200040d565b6040518060400160405280600a815260200169446f67676f2042616e6b60b01b8152506040518060400160405280600581526020016410905392d160da1b8152508160039081620000d79190620004f1565b506004620000e68282620004f1565b50505062000103620000fd6200039e60201b60201c565b620003a2565b601c80546001600160a01b038381166001600160a01b031992831617909255601d80548584169216919091179055600554166000908152602360205260409020805460ff1916600117905562000177306001600160a01b03166000908152602360205260409020805460ff19166001179055565b61dead60005260236020527fcfb917c9f12a67b756fd43c7510cd55b6708bb9e7558ef1abd90c51590e0aada805460ff19166001179055620001d7816001600160a01b03166000908152602360205260409020805460ff19166001179055565b62000200826001600160a01b03166000908152602360205260409020805460ff19166001179055565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d9050806001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000258573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027e9190620005bd565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002cc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f29190620005bd565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af115801562000340573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003669190620005bd565b601880546001600160a01b039283166001600160a01b031991821617909155601f805493909216921691909117905550620005e49050565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b03811681146200040a57600080fd5b50565b600080604083850312156200042157600080fd5b82516200042e81620003f4565b60208401519092506200044181620003f4565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200047757607f821691505b6020821081036200049857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620004ec57600081815260208120601f850160051c81016020861015620004c75750805b601f850160051c820191505b81811015620004e857828155600101620004d3565b5050505b505050565b81516001600160401b038111156200050d576200050d6200044c565b62000525816200051e845462000462565b846200049e565b602080601f8311600181146200055d5760008415620005445750858301515b600019600386901b1c1916600185901b178555620004e8565b600085815260208120601f198616915b828110156200058e578886015182559484019460019091019084016200056d565b5085821015620005ad5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215620005d057600080fd5b8151620005dd81620003f4565b9392505050565b61455a80620005f46000396000f3fe6080604052600436106105775760003560e01c80637bffe332116102d8578063bf31115011610180578063e0725ffb116100e7578063f38c5178116100a0578063fcbde1851161007a578063fcbde18514611149578063fe78d98a14611176578063ffb54a9914611196578063ffecf516146111b757600080fd5b8063f38c517814611107578063f53159881461111d578063f5c1f0221461113357600080fd5b8063e0725ffb1461104e578063e4adc8611461107b578063e8078d94146110a8578063f112932b146110b0578063f2fde38b146110c6578063f381306a146110e657600080fd5b8063cb0326da11610139578063cb0326da14610f50578063cdd7bd8214610f70578063d5aba74214610f90578063da66d4dc14610fb0578063dc1052e21461100e578063dd62ed3e1461102e57600080fd5b8063bf31115014610e7e578063c484628814610e9e578063c54fff6c14610ecb578063c703a3b014610ed3578063c7eb2b6414610f03578063caaa9d3814610f2357600080fd5b8063991383391161023f578063a9321573116101f8578063b0989d82116101d2578063b0989d8214610e11578063b589831614610e27578063b645d56514610e48578063bd3900c014610e6857600080fd5b8063a932157314610db1578063a93d021714610dd1578063a9c8eb6814610df157600080fd5b80639913833914610cd95780639d0be15014610cf95780639ef3bbea14610d2f578063a035b1fe14610d5c578063a457c2d714610d71578063a9059cbb14610d9157600080fd5b80638cd09d50116102915780638cd09d5014610c315780638da5cb5b14610c515780639358928b14610c6f5780639500586614610c8457806395d89b4114610ca4578063962dfc7514610cb957600080fd5b80637bffe33214610b935780637cb88b0414610bb35780637f62eb5b14610bc9578063838613fe14610be957806385320beb14610bf15780638b0414d514610c1157600080fd5b80633bbac5791161043b5780635ae9e94b116103a257806370a082311161035b57806373c127051161033557806373c1270514610b1d5780637547c7a314610b3d578063798441e014610b5d5780637b85176914610b7e57600080fd5b806370a0823114610abc578063715018a614610af25780637333868214610b0757600080fd5b80635ae9e94b146109e05780635fecd92614610a0057806369ec8e9c14610a205780636f8e6c6514610a59578063704b6c0214610a6f5780637087a50714610a8f57600080fd5b806349d8ae5e116103f457806349d8ae5e146109225780634b09400814610935578063524a4da0146109555780635530a3271461098a5780635926651d146109a057806359633a1c146109c057600080fd5b80633bbac579146108955780633eaaf86b146108b5578063425faf96146108cb57806342637332146108e05780634308fa6a146108f6578063482c37c61461090c57600080fd5b80632002d401116104df578063313ce56711610498578063313ce567146107fc57806335459a3e14610818578063366759ef146108385780633756329314610840578063378deba014610855578063395093511461087557600080fd5b80632002d4011461073957806323b872dd1461076657806323defe35146107865780632bff46a01461079c5780632e17de78146107bc57806330563bd7146107dc57600080fd5b80630ed22083116105315780630ed22083146106675780630ee685181461069f578063161fe38b146106c157806318160ddd146106ee5780631b355427146107035780631cb9dbba1461072357600080fd5b8062caac431461058357806306fdde03146105a5578063095d2d33146105d0578063095ea7b3146105f45780630c0102d0146106245780630e0b730e1461063a57600080fd5b3661057e57005b600080fd5b34801561058f57600080fd5b506105a361059e366004613e0f565b6111d7565b005b3480156105b157600080fd5b506105ba611256565b6040516105c79190613e84565b60405180910390f35b3480156105dc57600080fd5b506105e6600a5481565b6040519081526020016105c7565b34801561060057600080fd5b5061061461060f366004613ee7565b6112e8565b60405190151581526020016105c7565b34801561063057600080fd5b506105e660125481565b34801561064657600080fd5b506105e6610655366004613f13565b602c6020526000908152604090205481565b34801561067357600080fd5b50601954610687906001600160a01b031681565b6040516001600160a01b0390911681526020016105c7565b3480156106ab57600080fd5b506106b4611302565b6040516105c79190613f74565b3480156106cd57600080fd5b506105e66106dc366004613f13565b60286020526000908152604090205481565b3480156106fa57600080fd5b50600f546105e6565b34801561070f57600080fd5b50601854610687906001600160a01b031681565b34801561072f57600080fd5b506105e660175481565b34801561074557600080fd5b506105e6610754366004613f13565b60256020526000908152604090205481565b34801561077257600080fd5b50610614610781366004613f87565b61136c565b34801561079257600080fd5b506105e660145481565b3480156107a857600080fd5b506105a36107b7366004613fdd565b611390565b3480156107c857600080fd5b506105a36107d7366004613ff8565b6113c5565b3480156107e857600080fd5b506105a36107f7366004613f13565b61148a565b34801561080857600080fd5b50604051601281526020016105c7565b34801561082457600080fd5b506105a3610833366004613f13565b6114c3565b6105a36114fc565b34801561084c57600080fd5b506105a3611522565b34801561086157600080fd5b506105a3610870366004614011565b611742565b34801561088157600080fd5b50610614610890366004613ee7565b6117db565b3480156108a157600080fd5b506106146108b0366004613f13565b6117fd565b3480156108c157600080fd5b506105e6600f5481565b3480156108d757600080fd5b506105a361181b565b3480156108ec57600080fd5b506105e660105481565b34801561090257600080fd5b506105e660075481565b34801561091857600080fd5b506105e660155481565b6105e6610930366004613ff8565b611911565b34801561094157600080fd5b506105a3610950366004613f13565b611b0f565b34801561096157600080fd5b50610975610970366004613f13565b611b48565b604080519283526020830191909152016105c7565b34801561099657600080fd5b506105e660115481565b3480156109ac57600080fd5b506105a36109bb366004613f13565b611bea565b3480156109cc57600080fd5b506105a36109db366004613f13565b611cf2565b3480156109ec57600080fd5b506105a36109fb366004613ff8565b611eac565b348015610a0c57600080fd5b506105a3610a1b366004613f13565b611eeb565b348015610a2c57600080fd5b50610614610a3b366004613f13565b6001600160a01b031660009081526023602052604090205460ff1690565b348015610a6557600080fd5b506105e6600b5481565b348015610a7b57600080fd5b506105a3610a8a366004613f13565b611f36565b348015610a9b57600080fd5b506105e6610aaa366004613f13565b602f6020526000908152604090205481565b348015610ac857600080fd5b506105e6610ad7366004613f13565b6001600160a01b03166000908152602b602052604090205490565b348015610afe57600080fd5b506105a3611f60565b348015610b1357600080fd5b506105e660135481565b348015610b2957600080fd5b506105a3610b38366004613e0f565b611f74565b348015610b4957600080fd5b506105a3610b58366004613ff8565b611fee565b348015610b6957600080fd5b50601f5461061490600160b01b900460ff1681565b348015610b8a57600080fd5b506105e6612136565b348015610b9f57600080fd5b50601b54610687906001600160a01b031681565b348015610bbf57600080fd5b506105e6600c5481565b348015610bd557600080fd5b506105a3610be4366004613e0f565b61245e565b6105a36124e7565b348015610bfd57600080fd5b50601d54610687906001600160a01b031681565b348015610c1d57600080fd5b506105a3610c2c366004613f13565b612506565b348015610c3d57600080fd5b506105a3610c4c366004613ff8565b61253f565b348015610c5d57600080fd5b506005546001600160a01b0316610687565b348015610c7b57600080fd5b506105e6612569565b348015610c9057600080fd5b50601a54610687906001600160a01b031681565b348015610cb057600080fd5b506105ba6125aa565b348015610cc557600080fd5b50601c54610687906001600160a01b031681565b348015610ce557600080fd5b506105a3610cf4366004613ff8565b6125b9565b348015610d0557600080fd5b50610687610d14366004613f13565b6030602052600090815260409020546001600160a01b031681565b348015610d3b57600080fd5b506105e6610d4a366004613f13565b60266020526000908152604090205481565b348015610d6857600080fd5b506105e66125d8565b348015610d7d57600080fd5b50610614610d8c366004613ee7565b6126be565b348015610d9d57600080fd5b50610614610dac366004613ee7565b612739565b348015610dbd57600080fd5b506105a3610dcc366004613f13565b612747565b348015610ddd57600080fd5b506105e6610dec366004613f13565b612782565b348015610dfd57600080fd5b506105a3610e0c366004613ff8565b612823565b348015610e1d57600080fd5b506105e660095481565b348015610e3357600080fd5b50601f5461061490600160a81b900460ff1681565b348015610e5457600080fd5b506105a3610e63366004613f13565b61283f565b348015610e7457600080fd5b5061068761dead81565b348015610e8a57600080fd5b506105e6610e99366004613f13565b612878565b348015610eaa57600080fd5b506105e6610eb9366004613f13565b60276020526000908152604090205481565b6105a36128a1565b348015610edf57600080fd5b50610614610eee366004613f13565b60236020526000908152604090205460ff1681565b348015610f0f57600080fd5b50601e54610687906001600160a01b031681565b348015610f2f57600080fd5b506105e6610f3e366004613f13565b60246020526000908152604090205481565b348015610f5c57600080fd5b506105e6610f6b366004614044565b6128fb565b348015610f7c57600080fd5b506105a3610f8b366004613ff8565b612b83565b348015610f9c57600080fd5b506105e6610fab366004614066565b612b9f565b348015610fbc57600080fd5b50610ff3610fcb366004613f13565b6001600160a01b03166000908152603360205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016105c7565b34801561101a57600080fd5b506105a3611029366004613ff8565b612c1d565b34801561103a57600080fd5b506105e6611049366004614082565b612c47565b34801561105a57600080fd5b506105e6611069366004613f13565b602e6020526000908152604090205481565b34801561108757600080fd5b506105e6611096366004613f13565b602d6020526000908152604090205481565b6105a3612c72565b3480156110bc57600080fd5b506105e660065481565b3480156110d257600080fd5b506105a36110e1366004613f13565b612d9e565b3480156110f257600080fd5b50601f5461061490600160b81b900460ff1681565b34801561111357600080fd5b506105e660165481565b34801561112957600080fd5b506105e6600e5481565b34801561113f57600080fd5b506105e660085481565b34801561115557600080fd5b506105e6611164366004613f13565b60296020526000908152604090205481565b34801561118257600080fd5b506105a3611191366004613ff8565b612e14565b3480156111a257600080fd5b50601f5461061490600160a01b900460ff1681565b3480156111c357600080fd5b506105a36111d2366004613f13565b612e30565b6111df612e6b565b60005b8181101561125157600060226000858585818110611202576112026140bb565b90506020020160208101906112179190613f13565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611249816140e7565b9150506111e2565b505050565b60606003805461126590614100565b80601f016020809104026020016040519081016040528092919081815260200182805461129190614100565b80156112de5780601f106112b3576101008083540402835291602001916112de565b820191906000526020600020905b8154815290600101906020018083116112c157829003601f168201915b5050505050905090565b6000336112f6818585612ec5565b60019150505b92915050565b336000908152603260209081526040918290208054835181840281018401909452808452606093928301828280156112de57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611345575050505050905090565b60003361137a858285612fe9565b611385858585613063565b506001949350505050565b6019546001600160a01b031633146113a757600080fd5b601f8054911515600160a81b0260ff60a81b19909216919091179055565b3360009081526033602052604090205481118015906113e45750600081115b6113ed57600080fd5b33600090815260336020526040902060020154421161140b57600080fd5b806012600082825461141d919061413a565b9091555050336000908152603360205260408120805483929061144190849061413a565b909155506114529050303383613378565b60405181815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a250565b6019546001600160a01b031633146114a157600080fd5b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6019546001600160a01b031633146114da57600080fd5b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000341161150957600080fd5b346015600082825461151b919061414d565b9091555050565b601f54600160c81b900460ff161561153957600080fd5b601f805460ff60c81b1916600160c81b17905533600090815260208052604090205460ff161561156857600080fd5b336000818152603260205260408120549161158290612782565b9050811561169a5760005b82811015611698573360009081526032602052604081208054839081106115b6576115b66140bb565b60009182526020822001546001600160a01b031691506115d582612782565b336000908152602e60205260408120805492935083929091906115f990849061414d565b90915550506001600160a01b0382166000908152602f60205260408120805483929061162690849061414d565b909155506116369050818561414d565b9350806017600082825461164a919061414d565b90915550506013546001600160a01b0383166000908152602c602052604090205561167660018661413a565b8303611683575050611698565b50508080611690906140e7565b91505061158d565b505b80156117315780601460008282546116b2919061414d565b9091555050336000908152602d6020526040812080548392906116d690849061414d565b9091555050601354336000818152602c60205260409020919091556116fb908261342b565b60405181815233907fb4ab0faacc0308bf282db874520a67cb8357633ffe604ef19250704a17b678a49060200160405180910390a25b5050601f805460ff60c81b19169055565b6019546001600160a01b0316331461175957600080fd5b801515821515036117a15760405162461bcd60e51b815260206004820152600d60248201526c746f67676c6520706c6561736560981b60448201526064015b60405180910390fd5b81156117bc57601f805461ffff60b01b1916600160b01b1790555b80156117d757601f805461ffff60b01b1916600160b81b1790555b5050565b6000336112f68185856117ee8383612c47565b6117f8919061414d565b612ec5565b6001600160a01b031660009081526021602052604090205460ff1690565b601e546001600160a01b0316331461183257600080fd5b601f54600160c81b900460ff161561184957600080fd5b601f805460ff60c81b1916600160c81b17905560115461189e5760405162461bcd60e51b815260206004820152601060248201526f6e6f2063686172697479206d6f6e657960801b6044820152606401611798565b6011805490819060006118b1838061413a565b9091555050601e546118cc906001600160a01b03168261342b565b60405181815233907f5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e9060200160405180910390a250601f805460ff60c81b19169055565b604080516002808252606082018352600092839291906020830190803683375050601f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561197f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a39190614176565b816000815181106119b6576119b66140bb565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106119ea576119ea6140bb565b6001600160a01b03909216602092830291909101909101526000611a0e844261414d565b601f54604051637ff36ab560e01b81529192506000916001600160a01b0390911690637ff36ab5903490611a4e908590889061dead908990600401614193565b60006040518083038185885af1158015611a6c573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611a9591908101906141c8565b905060008160018351611aa8919061413a565b81518110611ab857611ab86140bb565b60200260200101519050600081111561057e57604080513481526020810183905233917f79650a26d9c122dcabbd86157b7bdabd291e5058cef11fc21c572518a1690ee6910160405180910390a295945050505050565b6019546001600160a01b03163314611b2657600080fd5b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526032602052604081205490805b82811015611be4576001600160a01b03841660009081526032602052604090208054611bb5919083908110611b9b57611b9b6140bb565b6000918252602090912001546001600160a01b0316612782565b611bbf908361414d565b9150611bcc60018461413a565b8114611be45780611bdc816140e7565b915050611b64565b50915091565b611bf3336117fd565b158015611c065750611c04816117fd565b155b611c0f57600080fd5b336000908152603060205260409020546001600160a01b03808316911603611c725760405162461bcd60e51b815260206004820152601660248201527520b63932b0b23c9030b23232b21030b9902237b737b960511b6044820152606401611798565b33600081815260306020908152604080832080546001600160a01b0387166001600160a01b0319918216811790925590845260328352818420805460018181018355828752858720909101805490931687179092558054958552810190925282208390556016805491929091611ce990849061414d565b90915550505050565b6001600160a01b03811660009081526032602090815260408083203384526001019091528120549003611d675760405162461bcd60e51b815260206004820152601b60248201527f796f7520617265206e6f7420696e20646f6e6f7273206c6973742100000000006044820152606401611798565b33600081815260306020908152604080832080546001600160a01b031916851790556001600160a01b038516808452603280845282852095855260018601845291842054935290528154909181611dbc6140bb565b60009182526020808320909101546001600160a01b03868116845260329092526040909220911690611def60018561413a565b81548110611dff57611dff6140bb565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152603290915260409020805480611e4457611e44614286565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0385168252603281526040808320338452600190810190925282208290556016805491929091611ea290849061413a565b9091555050505050565b6019546001600160a01b03163314611ec357600080fd5b6000606482611ed0612569565b611eda919061429c565b611ee491906142c9565b600a555050565b6019546001600160a01b03163314611f0257600080fd5b6001600160a01b03166000908152602160209081526040808320805460ff1990811690915591805290912080549091169055565b611f3e612e6b565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b611f68612e6b565b611f7260006134c5565b565b611f7c612e6b565b60005b8181101561125157600160226000858585818110611f9f57611f9f6140bb565b9050602002016020810190611fb49190613f13565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611fe6816140e7565b915050611f7f565b60008111801561200057506000600954115b61200957600080fd5b6005546001600160a01b03163314801590612033575032600090815260208052604090205460ff16155b801561204e575033600090815260208052604090205460ff16155b61205757600080fd5b60006009546201518061206a919061429c565b612074904261414d565b33600090815260336020526040902054909150156120b65733600090815260336020526040812080548492906120ab90849061414d565b909155506120d79050565b33600090815260336020526040902082815560095460018201556002018190555b81601260008282546120e9919061414d565b909155506120fa9050333084613378565b604051828152819033907f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90906020015b60405180910390a35050565b601f54600090600160c81b900460ff161561215057600080fd5b601f805460ff60c81b1916600160c81b17905533600090815260208052604090205460ff161561217f57600080fd5b33600090815260336020526040902054600b548110156121e15760405162461bcd60e51b815260206004820152601d60248201527f7374616b6520726571756972656420616d6f756e7420746f20706c61790000006044820152606401611798565b60006121ec33612782565b116122395760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e74207265666c656374696f6e732e000000000000006044820152606401611798565b336000908152602660205260409020546201518090612258904261413a565b116122965760405162461bcd60e51b815260206004820152600e60248201526d636f6f6c646f776e20323468727360901b6044820152606401611798565b3360009081526027602052604090205462015180906122b5904261413a565b116122f35760405162461bcd60e51b815260206004820152600e60248201526d636f6f6c646f776e20323468727360901b6044820152606401611798565b33600090815260246020526040812080546001929061231390849061414d565b909155505033600090815260256020526040812080546001929061233890849061414d565b90915550503360009081526024602052604090205460030361237c573360008181526024602090815260408083208390556026909152902042905561237c90613517565b600060064244336040516020016123b893929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c6123db91906142dd565b9050806000036123f3576123f060018261414d565b90505b806006036124175761240433613578565b3360009081526027602052604090204290555b60405181815233907f3176554d6b38ebe829dc68cee170cdb89bb76ca1dcd5e063a16c3261049d75009060200160405180910390a25050601f805460ff60c81b1916905590565b6019546001600160a01b0316331461247557600080fd5b60005b8181101561125157600160236000858585818110612498576124986140bb565b90506020020160208101906124ad9190613f13565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806124df816140e7565b915050612478565b600034116124f457600080fd5b346013600082825461151b919061414d565b6019546001600160a01b0316331461251d57600080fd5b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6019546001600160a01b0316331461255657600080fd5b600a81111561256457600080fd5b600755565b61dead6000908152602b6020527fcb067d08c3b0752a639a17b312edc0e4384bd60a697642bbd8bdd8260a31a34754600f546125a5919061413a565b905090565b60606004805461126590614100565b6125c1612e6b565b600d546000036125d557600e81905542600d555b50565b60185460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190614308565b506001600160701b031691506001600160701b031691508082111561269457816126796012600a61443c565b612683908361429c565b61268d91906142c9565b93506126b8565b806126a16012600a61443c565b6126ab908461429c565b6126b591906142c9565b93505b50505090565b600033816126cc8286612c47565b90508381101561272c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401611798565b6113858286868403612ec5565b6000336112f6818585613063565b6019546001600160a01b0316331461275e57600080fd5b6001600160a01b03166000908152602360205260409020805460ff19166001179055565b6001600160a01b0381166000908152602c602052604081205460135482916127a99161413a565b6018546001600160a01b03166000908152602b60205260409020549091506127cf612569565b6127d9919061413a565b6001600160a01b038416600090815260336020908152604080832054602b90925290912054612808919061414d565b612812908361429c565b61281c91906142c9565b9392505050565b6019546001600160a01b0316331461283a57600080fd5b600955565b6019546001600160a01b0316331461285657600080fd5b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152603160205260408120600181015490546112fc91906142c9565b6019546001600160a01b031633146128b857600080fd5b6000601554601154601354476128ce919061413a565b6128d8919061413a565b6128e2919061413a565b601c549091506125d5906001600160a01b03168261342b565b6040805160028082526060820183526000928392919060208301908036833701905050905082600103612a0b57601f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299f9190614176565b816000815181106129b2576129b26140bb565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106129e6576129e66140bb565b60200260200101906001600160a01b031690816001600160a01b031681525050612ad8565b82600003612ad8573081600081518110612a2757612a276140bb565b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa49190614176565b81600181518110612ab757612ab76140bb565b60200260200101906001600160a01b031690816001600160a01b0316815250505b601f5460405163d06ca61f60e01b81526000916001600160a01b03169063d06ca61f90612b0b9088908690600401614448565b600060405180830381865afa158015612b28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b5091908101906141c8565b90508060018251612b61919061413a565b81518110612b7157612b716140bb565b60200260200101519250505092915050565b6019546001600160a01b03163314612b9a57600080fd5b600b55565b601a546000906001600160a01b03163314612bb957600080fd5b81600103612bf6578215612bdc57601f805461ffff60b01b1916600160b01b1790555b82612bf657601f805461ffff60b01b1916600160b81b1790555b816002036112fc57601f8054841515600160a81b0260ff60a81b1990911617905592915050565b6019546001600160a01b03163314612c3457600080fd5b600a811115612c4257600080fd5b600655565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b612c7a612e6b565b601f805460ff60d01b1916600160d01b1790556b033b2e3c9fd0803ce800000060006064612ca983605a61429c565b612cb391906142c9565b90506000612cc1828461413a565b9050612ccd30836135d1565b601c54612ce3906001600160a01b0316826135d1565b601f54612cfb9030906001600160a01b031684612ec5565b601f546001600160a01b031663f305d719343085600080612d246005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401612d4696959493929190614469565b60606040518083038185885af1158015612d64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d8991906144a4565b5050601f805460ff60d01b1916905550505050565b612da6612e6b565b6001600160a01b038116612e0b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611798565b6125d5816134c5565b6019546001600160a01b03163314612e2b57600080fd5b600855565b6019546001600160a01b03163314612e4757600080fd5b6018546001600160a01b0390811690821603612e6257600080fd5b6125d58161364b565b6005546001600160a01b03163314611f725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611798565b6001600160a01b038316612f275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611798565b6001600160a01b038216612f885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611798565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000612ff58484612c47565b9050600019811461305d57818110156130505760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611798565b61305d8484848403612ec5565b50505050565b6001600160a01b03831660009081526023602052604090205460ff16806130a257506001600160a01b03821660009081526023602052604090205460ff165b1561311b57601c546001600160a01b039081169084160361311057600d546130cd9062278d0061414d565b42116131105760405162461bcd60e51b81526020600482015260126024820152711d19585b481d1bdad95b9cc81b1bd8dad95960721b6044820152606401611798565b611251838383613378565b6018546001600160a01b03838116911614801561314f57506001600160a01b0383166000908152602a602052604090205443145b1561315d5761315d8361364b565b6001600160a01b03821660009081526022602052604090205460ff166131c657600e54431115801561319c57506018546001600160a01b038481169116145b156131aa576131aa8261364b565b600e54158015906131bd5750600e544310155b6131c657600080fd5b6131cf836117fd565b1580156131e257506131e0826117fd565b155b6131eb57600080fd5b600a548111156131fa57600080fd5b601f54600160c01b900460ff1615801561321657506000600c54115b801561322f57506018546001600160a01b038381169116145b1561323f5761323f600c54613685565b6018548190600090819081906001600160a01b03908116908816036132745761326a85600654613c3d565b9094509150600190505b6018546001600160a01b039081169087160361329c5761329685600754613c3d565b90945092505b8015613312576132aa6125d8565b6132b4908561429c565b6001600160a01b038716600090815260316020526040812080549091906132dc90849061414d565b90915550506001600160a01b0386166000908152603160205260408120600101805486929061330c90849061414d565b90915550505b6018546001600160a01b0390811690881603613344576001600160a01b0386166000908152602a602052604090204390555b61334f878786613378565b821561335f5761335f8784613ca3565b811561336f5761336f8783613ca3565b50505050505050565b6001600160a01b03831661338b57600080fd5b6001600160a01b03821661339e57600080fd5b6001600160a01b0383166000908152602b6020526040902054818110156133c457600080fd5b6133ce8483613cc6565b6133d88383613d0a565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161341d91815260200190565b60405180910390a350505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613478576040519150601f19603f3d011682016040523d82523d6000602084013e61347d565b606091505b50509050806112515760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401611798565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061352282612782565b6001600160a01b0383166000908152602c6020526040812082905560158054929350839290919061355490849061414d565b90915550503360009081526029602052604081208054839290611ce990849061414d565b6000600260155461358991906142c9565b9050806015600082825461359d919061413a565b909155505033600090815260286020526040812080548392906135c190849061414d565b909155506117d79050828261342b565b6b033b2e3cadb136f08f640000600f54106135eb57600080fd5b80600f60008282546135fd919061414d565b9091555061360d90508282613d0a565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161212a565b6001600160a01b031660009081526021602090815260408083208054600160ff199182168117909255928052922080549091169091179055565b601f54600160c01b900460ff161561369c57600080fd5b601f805460ff60c01b1916600160c01b17908190556000908190819081908190600160b81b900460ff16151560010361370a5760646136dc87600a61429c565b6136e691906142c9565b93506136f36002856142c9565b92506136ff838761413a565b9450605a9150613712565b859450606491505b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613747576137476140bb565b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156137a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c49190614176565b816001815181106137d7576137d76140bb565b6001600160a01b039283166020918202929092010152601f546137fd9130911688612ec5565b601f5460405163791ac94760e01b815247916001600160a01b03169063791ac94790613836908a906000908790309042906004016144d2565b600060405180830381600087803b15801561385057600080fd5b505af1158015613864573d6000803e3d6000fd5b5050505060008147613876919061413a565b601f54909150600160b81b900460ff16156138c45787613896828861429c565b6138a091906142c9565b935083601060008282546138b4919061414d565b909155506138c490508685613d2e565b88600c60008282546138d6919061413a565b909155506138e69050848261413a565b90506000856138f683603c61429c565b61390091906142c9565b905060008661391084601961429c565b61391a91906142c9565b905060008761392a85600561429c565b61393491906142c9565b905060008183613944868861413a565b61394e919061413a565b613958919061413a565b601f54909150600160b01b900460ff1615613b4f57601f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e49190614176565b876000815181106139f7576139f76140bb565b60200260200101906001600160a01b031690816001600160a01b0316815250503087600181518110613a2b57613a2b6140bb565b6001600160a01b03909216602092830291909101909101526000613a51426101f461414d565b601f54604051637ff36ab560e01b81529192506000916001600160a01b0390911690637ff36ab5908590613a919085908e9061dead908990600401614193565b60006040518083038185885af1158015613aaf573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052613ad891908101906141c8565b9050306001600160a01b03167f79650a26d9c122dcabbd86157b7bdabd291e5058cef11fc21c572518a1690ee6848360018551613b15919061413a565b81518110613b2557613b256140bb565b6020026020010151604051613b44929190918252602082015260400190565b60405180910390a250505b601f54600160a81b900460ff1615613b7257613b6b828461414d565b9250600091505b6064613b7f84605a61429c565b613b8991906142c9565b60136000828254613b9a919061414d565b9091555060649050613bad84600a61429c565b613bb791906142c9565b60156000828254613bc8919061414d565b925050819055508160116000828254613be1919061414d565b9091555050601c54613c06906001600160a01b0316613c016002876142c9565b61342b565b601d54613c21906001600160a01b0316613c016002876142c9565b5050601f805460ff60c01b191690555050505050505050505050565b6000806064613c4c848661429c565b613c5691906142c9565b9050613c62818561413a565b9150600854600654600754613c77919061414d565b10613c8457613c8461450e565b613c8e818361414d565b8414613c9c57613c9c61450e565b9250929050565b80600c6000828254613cb5919061414d565b909155506117d79050823083613378565b6001600160a01b0382166000908152602b6020526040902054613cea90829061413a565b6001600160a01b039092166000908152602b602052604090209190915550565b6001600160a01b0382166000908152602b6020526040902054613cea90829061414d565b601f54613d469030906001600160a01b031684612ec5565b601f5460195460405163f305d71960e01b81526000926001600160a01b039081169263f305d719928692613d899230928a92899283929116904290600401614469565b60606040518083038185885af1158015613da7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613dcc91906144a4565b92505050807fe543a7582c29f037f8df8820891db74978aee374e292fd57297a5b936e30243842604051613e0291815260200190565b60405180910390a2505050565b60008060208385031215613e2257600080fd5b823567ffffffffffffffff80821115613e3a57600080fd5b818501915085601f830112613e4e57600080fd5b813581811115613e5d57600080fd5b8660208260051b8501011115613e7257600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b81811015613eb157858101830151858201604001528201613e95565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146125d557600080fd5b60008060408385031215613efa57600080fd5b8235613f0581613ed2565b946020939093013593505050565b600060208284031215613f2557600080fd5b813561281c81613ed2565b600081518084526020808501945080840160005b83811015613f695781516001600160a01b031687529582019590820190600101613f44565b509495945050505050565b60208152600061281c6020830184613f30565b600080600060608486031215613f9c57600080fd5b8335613fa781613ed2565b92506020840135613fb781613ed2565b929592945050506040919091013590565b80358015158114613fd857600080fd5b919050565b600060208284031215613fef57600080fd5b61281c82613fc8565b60006020828403121561400a57600080fd5b5035919050565b6000806040838503121561402457600080fd5b61402d83613fc8565b915061403b60208401613fc8565b90509250929050565b6000806040838503121561405757600080fd5b50508035926020909101359150565b6000806040838503121561407957600080fd5b613f0583613fc8565b6000806040838503121561409557600080fd5b82356140a081613ed2565b915060208301356140b081613ed2565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016140f9576140f96140d1565b5060010190565b600181811c9082168061411457607f821691505b60208210810361413457634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156112fc576112fc6140d1565b808201808211156112fc576112fc6140d1565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561418857600080fd5b815161281c81613ed2565b8481526080602082015260006141ac6080830186613f30565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156141db57600080fd5b825167ffffffffffffffff808211156141f357600080fd5b818501915085601f83011261420757600080fd5b81518181111561421957614219614160565b8060051b604051601f19603f8301168101818110858211171561423e5761423e614160565b60405291825284820192508381018501918883111561425c57600080fd5b938501935b8285101561427a57845184529385019392850192614261565b98975050505050505050565b634e487b7160e01b600052603160045260246000fd5b80820281158282048414176112fc576112fc6140d1565b634e487b7160e01b600052601260045260246000fd5b6000826142d8576142d86142b3565b500490565b6000826142ec576142ec6142b3565b500690565b80516001600160701b0381168114613fd857600080fd5b60008060006060848603121561431d57600080fd5b614326846142f1565b9250614334602085016142f1565b9150604084015163ffffffff8116811461434d57600080fd5b809150509250925092565b600181815b80851115614393578160001904821115614379576143796140d1565b8085161561438657918102915b93841c939080029061435d565b509250929050565b6000826143aa575060016112fc565b816143b7575060006112fc565b81600181146143cd57600281146143d7576143f3565b60019150506112fc565b60ff8411156143e8576143e86140d1565b50506001821b6112fc565b5060208310610133831016604e8410600b8410161715614416575081810a6112fc565b6144208383614358565b8060001904821115614434576144346140d1565b029392505050565b600061281c838361439b565b8281526040602082015260006144616040830184613f30565b949350505050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156144b957600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a0604082015260006144f160a0830186613f30565b6001600160a01b0394909416606083015250608001529392505050565b634e487b7160e01b600052600160045260246000fdfea26469706673582212201f613536c44ab74ec93e3a416f1a5d336238590b4b5425ae6bcad62053308c1c64736f6c634300081100330000000000000000000000009ebb4c9e810ceb88422303c96541a041172622350000000000000000000000003feb3d4726df3e09a0420cbb17c80fa238b8b986
Deployed Bytecode
0x6080604052600436106105775760003560e01c80637bffe332116102d8578063bf31115011610180578063e0725ffb116100e7578063f38c5178116100a0578063fcbde1851161007a578063fcbde18514611149578063fe78d98a14611176578063ffb54a9914611196578063ffecf516146111b757600080fd5b8063f38c517814611107578063f53159881461111d578063f5c1f0221461113357600080fd5b8063e0725ffb1461104e578063e4adc8611461107b578063e8078d94146110a8578063f112932b146110b0578063f2fde38b146110c6578063f381306a146110e657600080fd5b8063cb0326da11610139578063cb0326da14610f50578063cdd7bd8214610f70578063d5aba74214610f90578063da66d4dc14610fb0578063dc1052e21461100e578063dd62ed3e1461102e57600080fd5b8063bf31115014610e7e578063c484628814610e9e578063c54fff6c14610ecb578063c703a3b014610ed3578063c7eb2b6414610f03578063caaa9d3814610f2357600080fd5b8063991383391161023f578063a9321573116101f8578063b0989d82116101d2578063b0989d8214610e11578063b589831614610e27578063b645d56514610e48578063bd3900c014610e6857600080fd5b8063a932157314610db1578063a93d021714610dd1578063a9c8eb6814610df157600080fd5b80639913833914610cd95780639d0be15014610cf95780639ef3bbea14610d2f578063a035b1fe14610d5c578063a457c2d714610d71578063a9059cbb14610d9157600080fd5b80638cd09d50116102915780638cd09d5014610c315780638da5cb5b14610c515780639358928b14610c6f5780639500586614610c8457806395d89b4114610ca4578063962dfc7514610cb957600080fd5b80637bffe33214610b935780637cb88b0414610bb35780637f62eb5b14610bc9578063838613fe14610be957806385320beb14610bf15780638b0414d514610c1157600080fd5b80633bbac5791161043b5780635ae9e94b116103a257806370a082311161035b57806373c127051161033557806373c1270514610b1d5780637547c7a314610b3d578063798441e014610b5d5780637b85176914610b7e57600080fd5b806370a0823114610abc578063715018a614610af25780637333868214610b0757600080fd5b80635ae9e94b146109e05780635fecd92614610a0057806369ec8e9c14610a205780636f8e6c6514610a59578063704b6c0214610a6f5780637087a50714610a8f57600080fd5b806349d8ae5e116103f457806349d8ae5e146109225780634b09400814610935578063524a4da0146109555780635530a3271461098a5780635926651d146109a057806359633a1c146109c057600080fd5b80633bbac579146108955780633eaaf86b146108b5578063425faf96146108cb57806342637332146108e05780634308fa6a146108f6578063482c37c61461090c57600080fd5b80632002d401116104df578063313ce56711610498578063313ce567146107fc57806335459a3e14610818578063366759ef146108385780633756329314610840578063378deba014610855578063395093511461087557600080fd5b80632002d4011461073957806323b872dd1461076657806323defe35146107865780632bff46a01461079c5780632e17de78146107bc57806330563bd7146107dc57600080fd5b80630ed22083116105315780630ed22083146106675780630ee685181461069f578063161fe38b146106c157806318160ddd146106ee5780631b355427146107035780631cb9dbba1461072357600080fd5b8062caac431461058357806306fdde03146105a5578063095d2d33146105d0578063095ea7b3146105f45780630c0102d0146106245780630e0b730e1461063a57600080fd5b3661057e57005b600080fd5b34801561058f57600080fd5b506105a361059e366004613e0f565b6111d7565b005b3480156105b157600080fd5b506105ba611256565b6040516105c79190613e84565b60405180910390f35b3480156105dc57600080fd5b506105e6600a5481565b6040519081526020016105c7565b34801561060057600080fd5b5061061461060f366004613ee7565b6112e8565b60405190151581526020016105c7565b34801561063057600080fd5b506105e660125481565b34801561064657600080fd5b506105e6610655366004613f13565b602c6020526000908152604090205481565b34801561067357600080fd5b50601954610687906001600160a01b031681565b6040516001600160a01b0390911681526020016105c7565b3480156106ab57600080fd5b506106b4611302565b6040516105c79190613f74565b3480156106cd57600080fd5b506105e66106dc366004613f13565b60286020526000908152604090205481565b3480156106fa57600080fd5b50600f546105e6565b34801561070f57600080fd5b50601854610687906001600160a01b031681565b34801561072f57600080fd5b506105e660175481565b34801561074557600080fd5b506105e6610754366004613f13565b60256020526000908152604090205481565b34801561077257600080fd5b50610614610781366004613f87565b61136c565b34801561079257600080fd5b506105e660145481565b3480156107a857600080fd5b506105a36107b7366004613fdd565b611390565b3480156107c857600080fd5b506105a36107d7366004613ff8565b6113c5565b3480156107e857600080fd5b506105a36107f7366004613f13565b61148a565b34801561080857600080fd5b50604051601281526020016105c7565b34801561082457600080fd5b506105a3610833366004613f13565b6114c3565b6105a36114fc565b34801561084c57600080fd5b506105a3611522565b34801561086157600080fd5b506105a3610870366004614011565b611742565b34801561088157600080fd5b50610614610890366004613ee7565b6117db565b3480156108a157600080fd5b506106146108b0366004613f13565b6117fd565b3480156108c157600080fd5b506105e6600f5481565b3480156108d757600080fd5b506105a361181b565b3480156108ec57600080fd5b506105e660105481565b34801561090257600080fd5b506105e660075481565b34801561091857600080fd5b506105e660155481565b6105e6610930366004613ff8565b611911565b34801561094157600080fd5b506105a3610950366004613f13565b611b0f565b34801561096157600080fd5b50610975610970366004613f13565b611b48565b604080519283526020830191909152016105c7565b34801561099657600080fd5b506105e660115481565b3480156109ac57600080fd5b506105a36109bb366004613f13565b611bea565b3480156109cc57600080fd5b506105a36109db366004613f13565b611cf2565b3480156109ec57600080fd5b506105a36109fb366004613ff8565b611eac565b348015610a0c57600080fd5b506105a3610a1b366004613f13565b611eeb565b348015610a2c57600080fd5b50610614610a3b366004613f13565b6001600160a01b031660009081526023602052604090205460ff1690565b348015610a6557600080fd5b506105e6600b5481565b348015610a7b57600080fd5b506105a3610a8a366004613f13565b611f36565b348015610a9b57600080fd5b506105e6610aaa366004613f13565b602f6020526000908152604090205481565b348015610ac857600080fd5b506105e6610ad7366004613f13565b6001600160a01b03166000908152602b602052604090205490565b348015610afe57600080fd5b506105a3611f60565b348015610b1357600080fd5b506105e660135481565b348015610b2957600080fd5b506105a3610b38366004613e0f565b611f74565b348015610b4957600080fd5b506105a3610b58366004613ff8565b611fee565b348015610b6957600080fd5b50601f5461061490600160b01b900460ff1681565b348015610b8a57600080fd5b506105e6612136565b348015610b9f57600080fd5b50601b54610687906001600160a01b031681565b348015610bbf57600080fd5b506105e6600c5481565b348015610bd557600080fd5b506105a3610be4366004613e0f565b61245e565b6105a36124e7565b348015610bfd57600080fd5b50601d54610687906001600160a01b031681565b348015610c1d57600080fd5b506105a3610c2c366004613f13565b612506565b348015610c3d57600080fd5b506105a3610c4c366004613ff8565b61253f565b348015610c5d57600080fd5b506005546001600160a01b0316610687565b348015610c7b57600080fd5b506105e6612569565b348015610c9057600080fd5b50601a54610687906001600160a01b031681565b348015610cb057600080fd5b506105ba6125aa565b348015610cc557600080fd5b50601c54610687906001600160a01b031681565b348015610ce557600080fd5b506105a3610cf4366004613ff8565b6125b9565b348015610d0557600080fd5b50610687610d14366004613f13565b6030602052600090815260409020546001600160a01b031681565b348015610d3b57600080fd5b506105e6610d4a366004613f13565b60266020526000908152604090205481565b348015610d6857600080fd5b506105e66125d8565b348015610d7d57600080fd5b50610614610d8c366004613ee7565b6126be565b348015610d9d57600080fd5b50610614610dac366004613ee7565b612739565b348015610dbd57600080fd5b506105a3610dcc366004613f13565b612747565b348015610ddd57600080fd5b506105e6610dec366004613f13565b612782565b348015610dfd57600080fd5b506105a3610e0c366004613ff8565b612823565b348015610e1d57600080fd5b506105e660095481565b348015610e3357600080fd5b50601f5461061490600160a81b900460ff1681565b348015610e5457600080fd5b506105a3610e63366004613f13565b61283f565b348015610e7457600080fd5b5061068761dead81565b348015610e8a57600080fd5b506105e6610e99366004613f13565b612878565b348015610eaa57600080fd5b506105e6610eb9366004613f13565b60276020526000908152604090205481565b6105a36128a1565b348015610edf57600080fd5b50610614610eee366004613f13565b60236020526000908152604090205460ff1681565b348015610f0f57600080fd5b50601e54610687906001600160a01b031681565b348015610f2f57600080fd5b506105e6610f3e366004613f13565b60246020526000908152604090205481565b348015610f5c57600080fd5b506105e6610f6b366004614044565b6128fb565b348015610f7c57600080fd5b506105a3610f8b366004613ff8565b612b83565b348015610f9c57600080fd5b506105e6610fab366004614066565b612b9f565b348015610fbc57600080fd5b50610ff3610fcb366004613f13565b6001600160a01b03166000908152603360205260409020805460018201546002909201549092565b604080519384526020840192909252908201526060016105c7565b34801561101a57600080fd5b506105a3611029366004613ff8565b612c1d565b34801561103a57600080fd5b506105e6611049366004614082565b612c47565b34801561105a57600080fd5b506105e6611069366004613f13565b602e6020526000908152604090205481565b34801561108757600080fd5b506105e6611096366004613f13565b602d6020526000908152604090205481565b6105a3612c72565b3480156110bc57600080fd5b506105e660065481565b3480156110d257600080fd5b506105a36110e1366004613f13565b612d9e565b3480156110f257600080fd5b50601f5461061490600160b81b900460ff1681565b34801561111357600080fd5b506105e660165481565b34801561112957600080fd5b506105e6600e5481565b34801561113f57600080fd5b506105e660085481565b34801561115557600080fd5b506105e6611164366004613f13565b60296020526000908152604090205481565b34801561118257600080fd5b506105a3611191366004613ff8565b612e14565b3480156111a257600080fd5b50601f5461061490600160a01b900460ff1681565b3480156111c357600080fd5b506105a36111d2366004613f13565b612e30565b6111df612e6b565b60005b8181101561125157600060226000858585818110611202576112026140bb565b90506020020160208101906112179190613f13565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611249816140e7565b9150506111e2565b505050565b60606003805461126590614100565b80601f016020809104026020016040519081016040528092919081815260200182805461129190614100565b80156112de5780601f106112b3576101008083540402835291602001916112de565b820191906000526020600020905b8154815290600101906020018083116112c157829003601f168201915b5050505050905090565b6000336112f6818585612ec5565b60019150505b92915050565b336000908152603260209081526040918290208054835181840281018401909452808452606093928301828280156112de57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611345575050505050905090565b60003361137a858285612fe9565b611385858585613063565b506001949350505050565b6019546001600160a01b031633146113a757600080fd5b601f8054911515600160a81b0260ff60a81b19909216919091179055565b3360009081526033602052604090205481118015906113e45750600081115b6113ed57600080fd5b33600090815260336020526040902060020154421161140b57600080fd5b806012600082825461141d919061413a565b9091555050336000908152603360205260408120805483929061144190849061413a565b909155506114529050303383613378565b60405181815233907f0f5bb82176feb1b5e747e28471aa92156a04d9f3ab9f45f28e2d704232b93f759060200160405180910390a250565b6019546001600160a01b031633146114a157600080fd5b601e80546001600160a01b0319166001600160a01b0392909216919091179055565b6019546001600160a01b031633146114da57600080fd5b601b80546001600160a01b0319166001600160a01b0392909216919091179055565b6000341161150957600080fd5b346015600082825461151b919061414d565b9091555050565b601f54600160c81b900460ff161561153957600080fd5b601f805460ff60c81b1916600160c81b17905533600090815260208052604090205460ff161561156857600080fd5b336000818152603260205260408120549161158290612782565b9050811561169a5760005b82811015611698573360009081526032602052604081208054839081106115b6576115b66140bb565b60009182526020822001546001600160a01b031691506115d582612782565b336000908152602e60205260408120805492935083929091906115f990849061414d565b90915550506001600160a01b0382166000908152602f60205260408120805483929061162690849061414d565b909155506116369050818561414d565b9350806017600082825461164a919061414d565b90915550506013546001600160a01b0383166000908152602c602052604090205561167660018661413a565b8303611683575050611698565b50508080611690906140e7565b91505061158d565b505b80156117315780601460008282546116b2919061414d565b9091555050336000908152602d6020526040812080548392906116d690849061414d565b9091555050601354336000818152602c60205260409020919091556116fb908261342b565b60405181815233907fb4ab0faacc0308bf282db874520a67cb8357633ffe604ef19250704a17b678a49060200160405180910390a25b5050601f805460ff60c81b19169055565b6019546001600160a01b0316331461175957600080fd5b801515821515036117a15760405162461bcd60e51b815260206004820152600d60248201526c746f67676c6520706c6561736560981b60448201526064015b60405180910390fd5b81156117bc57601f805461ffff60b01b1916600160b01b1790555b80156117d757601f805461ffff60b01b1916600160b81b1790555b5050565b6000336112f68185856117ee8383612c47565b6117f8919061414d565b612ec5565b6001600160a01b031660009081526021602052604090205460ff1690565b601e546001600160a01b0316331461183257600080fd5b601f54600160c81b900460ff161561184957600080fd5b601f805460ff60c81b1916600160c81b17905560115461189e5760405162461bcd60e51b815260206004820152601060248201526f6e6f2063686172697479206d6f6e657960801b6044820152606401611798565b6011805490819060006118b1838061413a565b9091555050601e546118cc906001600160a01b03168261342b565b60405181815233907f5d8bc849764969eb1bcc6d0a2f55999d0167c1ccec240a4f39cf664ca9c4148e9060200160405180910390a250601f805460ff60c81b19169055565b604080516002808252606082018352600092839291906020830190803683375050601f54604080516315ab88c960e31b815290519394506001600160a01b039091169263ad5c4648925060048083019260209291908290030181865afa15801561197f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a39190614176565b816000815181106119b6576119b66140bb565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106119ea576119ea6140bb565b6001600160a01b03909216602092830291909101909101526000611a0e844261414d565b601f54604051637ff36ab560e01b81529192506000916001600160a01b0390911690637ff36ab5903490611a4e908590889061dead908990600401614193565b60006040518083038185885af1158015611a6c573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052611a9591908101906141c8565b905060008160018351611aa8919061413a565b81518110611ab857611ab86140bb565b60200260200101519050600081111561057e57604080513481526020810183905233917f79650a26d9c122dcabbd86157b7bdabd291e5058cef11fc21c572518a1690ee6910160405180910390a295945050505050565b6019546001600160a01b03163314611b2657600080fd5b601a80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03811660009081526032602052604081205490805b82811015611be4576001600160a01b03841660009081526032602052604090208054611bb5919083908110611b9b57611b9b6140bb565b6000918252602090912001546001600160a01b0316612782565b611bbf908361414d565b9150611bcc60018461413a565b8114611be45780611bdc816140e7565b915050611b64565b50915091565b611bf3336117fd565b158015611c065750611c04816117fd565b155b611c0f57600080fd5b336000908152603060205260409020546001600160a01b03808316911603611c725760405162461bcd60e51b815260206004820152601660248201527520b63932b0b23c9030b23232b21030b9902237b737b960511b6044820152606401611798565b33600081815260306020908152604080832080546001600160a01b0387166001600160a01b0319918216811790925590845260328352818420805460018181018355828752858720909101805490931687179092558054958552810190925282208390556016805491929091611ce990849061414d565b90915550505050565b6001600160a01b03811660009081526032602090815260408083203384526001019091528120549003611d675760405162461bcd60e51b815260206004820152601b60248201527f796f7520617265206e6f7420696e20646f6e6f7273206c6973742100000000006044820152606401611798565b33600081815260306020908152604080832080546001600160a01b031916851790556001600160a01b038516808452603280845282852095855260018601845291842054935290528154909181611dbc6140bb565b60009182526020808320909101546001600160a01b03868116845260329092526040909220911690611def60018561413a565b81548110611dff57611dff6140bb565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559185168152603290915260409020805480611e4457611e44614286565b60008281526020808220830160001990810180546001600160a01b03191690559092019092556001600160a01b0385168252603281526040808320338452600190810190925282208290556016805491929091611ea290849061413a565b9091555050505050565b6019546001600160a01b03163314611ec357600080fd5b6000606482611ed0612569565b611eda919061429c565b611ee491906142c9565b600a555050565b6019546001600160a01b03163314611f0257600080fd5b6001600160a01b03166000908152602160209081526040808320805460ff1990811690915591805290912080549091169055565b611f3e612e6b565b601980546001600160a01b0319166001600160a01b0392909216919091179055565b611f68612e6b565b611f7260006134c5565b565b611f7c612e6b565b60005b8181101561125157600160226000858585818110611f9f57611f9f6140bb565b9050602002016020810190611fb49190613f13565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580611fe6816140e7565b915050611f7f565b60008111801561200057506000600954115b61200957600080fd5b6005546001600160a01b03163314801590612033575032600090815260208052604090205460ff16155b801561204e575033600090815260208052604090205460ff16155b61205757600080fd5b60006009546201518061206a919061429c565b612074904261414d565b33600090815260336020526040902054909150156120b65733600090815260336020526040812080548492906120ab90849061414d565b909155506120d79050565b33600090815260336020526040902082815560095460018201556002018190555b81601260008282546120e9919061414d565b909155506120fa9050333084613378565b604051828152819033907f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee90906020015b60405180910390a35050565b601f54600090600160c81b900460ff161561215057600080fd5b601f805460ff60c81b1916600160c81b17905533600090815260208052604090205460ff161561217f57600080fd5b33600090815260336020526040902054600b548110156121e15760405162461bcd60e51b815260206004820152601d60248201527f7374616b6520726571756972656420616d6f756e7420746f20706c61790000006044820152606401611798565b60006121ec33612782565b116122395760405162461bcd60e51b815260206004820152601960248201527f696e73756666696369656e74207265666c656374696f6e732e000000000000006044820152606401611798565b336000908152602660205260409020546201518090612258904261413a565b116122965760405162461bcd60e51b815260206004820152600e60248201526d636f6f6c646f776e20323468727360901b6044820152606401611798565b3360009081526027602052604090205462015180906122b5904261413a565b116122f35760405162461bcd60e51b815260206004820152600e60248201526d636f6f6c646f776e20323468727360901b6044820152606401611798565b33600090815260246020526040812080546001929061231390849061414d565b909155505033600090815260256020526040812080546001929061233890849061414d565b90915550503360009081526024602052604090205460030361237c573360008181526024602090815260408083208390556026909152902042905561237c90613517565b600060064244336040516020016123b893929190928352602083019190915260601b6bffffffffffffffffffffffff1916604082015260540190565b6040516020818303038152906040528051906020012060001c6123db91906142dd565b9050806000036123f3576123f060018261414d565b90505b806006036124175761240433613578565b3360009081526027602052604090204290555b60405181815233907f3176554d6b38ebe829dc68cee170cdb89bb76ca1dcd5e063a16c3261049d75009060200160405180910390a25050601f805460ff60c81b1916905590565b6019546001600160a01b0316331461247557600080fd5b60005b8181101561125157600160236000858585818110612498576124986140bb565b90506020020160208101906124ad9190613f13565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055806124df816140e7565b915050612478565b600034116124f457600080fd5b346013600082825461151b919061414d565b6019546001600160a01b0316331461251d57600080fd5b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6019546001600160a01b0316331461255657600080fd5b600a81111561256457600080fd5b600755565b61dead6000908152602b6020527fcb067d08c3b0752a639a17b312edc0e4384bd60a697642bbd8bdd8260a31a34754600f546125a5919061413a565b905090565b60606004805461126590614100565b6125c1612e6b565b600d546000036125d557600e81905542600d555b50565b60185460408051630240bc6b60e21b815290516000926001600160a01b031691839182918491630902f1ac916004808201926060929091908290030181865afa158015612629573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061264d9190614308565b506001600160701b031691506001600160701b031691508082111561269457816126796012600a61443c565b612683908361429c565b61268d91906142c9565b93506126b8565b806126a16012600a61443c565b6126ab908461429c565b6126b591906142c9565b93505b50505090565b600033816126cc8286612c47565b90508381101561272c5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401611798565b6113858286868403612ec5565b6000336112f6818585613063565b6019546001600160a01b0316331461275e57600080fd5b6001600160a01b03166000908152602360205260409020805460ff19166001179055565b6001600160a01b0381166000908152602c602052604081205460135482916127a99161413a565b6018546001600160a01b03166000908152602b60205260409020549091506127cf612569565b6127d9919061413a565b6001600160a01b038416600090815260336020908152604080832054602b90925290912054612808919061414d565b612812908361429c565b61281c91906142c9565b9392505050565b6019546001600160a01b0316331461283a57600080fd5b600955565b6019546001600160a01b0316331461285657600080fd5b601d80546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0381166000908152603160205260408120600181015490546112fc91906142c9565b6019546001600160a01b031633146128b857600080fd5b6000601554601154601354476128ce919061413a565b6128d8919061413a565b6128e2919061413a565b601c549091506125d5906001600160a01b03168261342b565b6040805160028082526060820183526000928392919060208301908036833701905050905082600103612a0b57601f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561297b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061299f9190614176565b816000815181106129b2576129b26140bb565b60200260200101906001600160a01b031690816001600160a01b03168152505030816001815181106129e6576129e66140bb565b60200260200101906001600160a01b031690816001600160a01b031681525050612ad8565b82600003612ad8573081600081518110612a2757612a276140bb565b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa158015612a80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612aa49190614176565b81600181518110612ab757612ab76140bb565b60200260200101906001600160a01b031690816001600160a01b0316815250505b601f5460405163d06ca61f60e01b81526000916001600160a01b03169063d06ca61f90612b0b9088908690600401614448565b600060405180830381865afa158015612b28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b5091908101906141c8565b90508060018251612b61919061413a565b81518110612b7157612b716140bb565b60200260200101519250505092915050565b6019546001600160a01b03163314612b9a57600080fd5b600b55565b601a546000906001600160a01b03163314612bb957600080fd5b81600103612bf6578215612bdc57601f805461ffff60b01b1916600160b01b1790555b82612bf657601f805461ffff60b01b1916600160b81b1790555b816002036112fc57601f8054841515600160a81b0260ff60a81b1990911617905592915050565b6019546001600160a01b03163314612c3457600080fd5b600a811115612c4257600080fd5b600655565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b612c7a612e6b565b601f805460ff60d01b1916600160d01b1790556b033b2e3c9fd0803ce800000060006064612ca983605a61429c565b612cb391906142c9565b90506000612cc1828461413a565b9050612ccd30836135d1565b601c54612ce3906001600160a01b0316826135d1565b601f54612cfb9030906001600160a01b031684612ec5565b601f546001600160a01b031663f305d719343085600080612d246005546001600160a01b031690565b426040518863ffffffff1660e01b8152600401612d4696959493929190614469565b60606040518083038185885af1158015612d64573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612d8991906144a4565b5050601f805460ff60d01b1916905550505050565b612da6612e6b565b6001600160a01b038116612e0b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401611798565b6125d5816134c5565b6019546001600160a01b03163314612e2b57600080fd5b600855565b6019546001600160a01b03163314612e4757600080fd5b6018546001600160a01b0390811690821603612e6257600080fd5b6125d58161364b565b6005546001600160a01b03163314611f725760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401611798565b6001600160a01b038316612f275760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401611798565b6001600160a01b038216612f885760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401611798565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000612ff58484612c47565b9050600019811461305d57818110156130505760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401611798565b61305d8484848403612ec5565b50505050565b6001600160a01b03831660009081526023602052604090205460ff16806130a257506001600160a01b03821660009081526023602052604090205460ff165b1561311b57601c546001600160a01b039081169084160361311057600d546130cd9062278d0061414d565b42116131105760405162461bcd60e51b81526020600482015260126024820152711d19585b481d1bdad95b9cc81b1bd8dad95960721b6044820152606401611798565b611251838383613378565b6018546001600160a01b03838116911614801561314f57506001600160a01b0383166000908152602a602052604090205443145b1561315d5761315d8361364b565b6001600160a01b03821660009081526022602052604090205460ff166131c657600e54431115801561319c57506018546001600160a01b038481169116145b156131aa576131aa8261364b565b600e54158015906131bd5750600e544310155b6131c657600080fd5b6131cf836117fd565b1580156131e257506131e0826117fd565b155b6131eb57600080fd5b600a548111156131fa57600080fd5b601f54600160c01b900460ff1615801561321657506000600c54115b801561322f57506018546001600160a01b038381169116145b1561323f5761323f600c54613685565b6018548190600090819081906001600160a01b03908116908816036132745761326a85600654613c3d565b9094509150600190505b6018546001600160a01b039081169087160361329c5761329685600754613c3d565b90945092505b8015613312576132aa6125d8565b6132b4908561429c565b6001600160a01b038716600090815260316020526040812080549091906132dc90849061414d565b90915550506001600160a01b0386166000908152603160205260408120600101805486929061330c90849061414d565b90915550505b6018546001600160a01b0390811690881603613344576001600160a01b0386166000908152602a602052604090204390555b61334f878786613378565b821561335f5761335f8784613ca3565b811561336f5761336f8783613ca3565b50505050505050565b6001600160a01b03831661338b57600080fd5b6001600160a01b03821661339e57600080fd5b6001600160a01b0383166000908152602b6020526040902054818110156133c457600080fd5b6133ce8483613cc6565b6133d88383613d0a565b826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161341d91815260200190565b60405180910390a350505050565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114613478576040519150601f19603f3d011682016040523d82523d6000602084013e61347d565b606091505b50509050806112515760405162461bcd60e51b81526020600482015260146024820152732330b4b632b2103a379039b2b7321022ba3432b960611b6044820152606401611798565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600061352282612782565b6001600160a01b0383166000908152602c6020526040812082905560158054929350839290919061355490849061414d565b90915550503360009081526029602052604081208054839290611ce990849061414d565b6000600260155461358991906142c9565b9050806015600082825461359d919061413a565b909155505033600090815260286020526040812080548392906135c190849061414d565b909155506117d79050828261342b565b6b033b2e3cadb136f08f640000600f54106135eb57600080fd5b80600f60008282546135fd919061414d565b9091555061360d90508282613d0a565b6040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200161212a565b6001600160a01b031660009081526021602090815260408083208054600160ff199182168117909255928052922080549091169091179055565b601f54600160c01b900460ff161561369c57600080fd5b601f805460ff60c01b1916600160c01b17908190556000908190819081908190600160b81b900460ff16151560010361370a5760646136dc87600a61429c565b6136e691906142c9565b93506136f36002856142c9565b92506136ff838761413a565b9450605a9150613712565b859450606491505b6040805160028082526060820183526000926020830190803683370190505090503081600081518110613747576137476140bb565b6001600160a01b03928316602091820292909201810191909152601f54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156137a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137c49190614176565b816001815181106137d7576137d76140bb565b6001600160a01b039283166020918202929092010152601f546137fd9130911688612ec5565b601f5460405163791ac94760e01b815247916001600160a01b03169063791ac94790613836908a906000908790309042906004016144d2565b600060405180830381600087803b15801561385057600080fd5b505af1158015613864573d6000803e3d6000fd5b5050505060008147613876919061413a565b601f54909150600160b81b900460ff16156138c45787613896828861429c565b6138a091906142c9565b935083601060008282546138b4919061414d565b909155506138c490508685613d2e565b88600c60008282546138d6919061413a565b909155506138e69050848261413a565b90506000856138f683603c61429c565b61390091906142c9565b905060008661391084601961429c565b61391a91906142c9565b905060008761392a85600561429c565b61393491906142c9565b905060008183613944868861413a565b61394e919061413a565b613958919061413a565b601f54909150600160b01b900460ff1615613b4f57601f60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156139c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139e49190614176565b876000815181106139f7576139f76140bb565b60200260200101906001600160a01b031690816001600160a01b0316815250503087600181518110613a2b57613a2b6140bb565b6001600160a01b03909216602092830291909101909101526000613a51426101f461414d565b601f54604051637ff36ab560e01b81529192506000916001600160a01b0390911690637ff36ab5908590613a919085908e9061dead908990600401614193565b60006040518083038185885af1158015613aaf573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f19168201604052613ad891908101906141c8565b9050306001600160a01b03167f79650a26d9c122dcabbd86157b7bdabd291e5058cef11fc21c572518a1690ee6848360018551613b15919061413a565b81518110613b2557613b256140bb565b6020026020010151604051613b44929190918252602082015260400190565b60405180910390a250505b601f54600160a81b900460ff1615613b7257613b6b828461414d565b9250600091505b6064613b7f84605a61429c565b613b8991906142c9565b60136000828254613b9a919061414d565b9091555060649050613bad84600a61429c565b613bb791906142c9565b60156000828254613bc8919061414d565b925050819055508160116000828254613be1919061414d565b9091555050601c54613c06906001600160a01b0316613c016002876142c9565b61342b565b601d54613c21906001600160a01b0316613c016002876142c9565b5050601f805460ff60c01b191690555050505050505050505050565b6000806064613c4c848661429c565b613c5691906142c9565b9050613c62818561413a565b9150600854600654600754613c77919061414d565b10613c8457613c8461450e565b613c8e818361414d565b8414613c9c57613c9c61450e565b9250929050565b80600c6000828254613cb5919061414d565b909155506117d79050823083613378565b6001600160a01b0382166000908152602b6020526040902054613cea90829061413a565b6001600160a01b039092166000908152602b602052604090209190915550565b6001600160a01b0382166000908152602b6020526040902054613cea90829061414d565b601f54613d469030906001600160a01b031684612ec5565b601f5460195460405163f305d71960e01b81526000926001600160a01b039081169263f305d719928692613d899230928a92899283929116904290600401614469565b60606040518083038185885af1158015613da7573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190613dcc91906144a4565b92505050807fe543a7582c29f037f8df8820891db74978aee374e292fd57297a5b936e30243842604051613e0291815260200190565b60405180910390a2505050565b60008060208385031215613e2257600080fd5b823567ffffffffffffffff80821115613e3a57600080fd5b818501915085601f830112613e4e57600080fd5b813581811115613e5d57600080fd5b8660208260051b8501011115613e7257600080fd5b60209290920196919550909350505050565b600060208083528351808285015260005b81811015613eb157858101830151858201604001528201613e95565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b03811681146125d557600080fd5b60008060408385031215613efa57600080fd5b8235613f0581613ed2565b946020939093013593505050565b600060208284031215613f2557600080fd5b813561281c81613ed2565b600081518084526020808501945080840160005b83811015613f695781516001600160a01b031687529582019590820190600101613f44565b509495945050505050565b60208152600061281c6020830184613f30565b600080600060608486031215613f9c57600080fd5b8335613fa781613ed2565b92506020840135613fb781613ed2565b929592945050506040919091013590565b80358015158114613fd857600080fd5b919050565b600060208284031215613fef57600080fd5b61281c82613fc8565b60006020828403121561400a57600080fd5b5035919050565b6000806040838503121561402457600080fd5b61402d83613fc8565b915061403b60208401613fc8565b90509250929050565b6000806040838503121561405757600080fd5b50508035926020909101359150565b6000806040838503121561407957600080fd5b613f0583613fc8565b6000806040838503121561409557600080fd5b82356140a081613ed2565b915060208301356140b081613ed2565b809150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016140f9576140f96140d1565b5060010190565b600181811c9082168061411457607f821691505b60208210810361413457634e487b7160e01b600052602260045260246000fd5b50919050565b818103818111156112fc576112fc6140d1565b808201808211156112fc576112fc6140d1565b634e487b7160e01b600052604160045260246000fd5b60006020828403121561418857600080fd5b815161281c81613ed2565b8481526080602082015260006141ac6080830186613f30565b6001600160a01b03949094166040830152506060015292915050565b600060208083850312156141db57600080fd5b825167ffffffffffffffff808211156141f357600080fd5b818501915085601f83011261420757600080fd5b81518181111561421957614219614160565b8060051b604051601f19603f8301168101818110858211171561423e5761423e614160565b60405291825284820192508381018501918883111561425c57600080fd5b938501935b8285101561427a57845184529385019392850192614261565b98975050505050505050565b634e487b7160e01b600052603160045260246000fd5b80820281158282048414176112fc576112fc6140d1565b634e487b7160e01b600052601260045260246000fd5b6000826142d8576142d86142b3565b500490565b6000826142ec576142ec6142b3565b500690565b80516001600160701b0381168114613fd857600080fd5b60008060006060848603121561431d57600080fd5b614326846142f1565b9250614334602085016142f1565b9150604084015163ffffffff8116811461434d57600080fd5b809150509250925092565b600181815b80851115614393578160001904821115614379576143796140d1565b8085161561438657918102915b93841c939080029061435d565b509250929050565b6000826143aa575060016112fc565b816143b7575060006112fc565b81600181146143cd57600281146143d7576143f3565b60019150506112fc565b60ff8411156143e8576143e86140d1565b50506001821b6112fc565b5060208310610133831016604e8410600b8410161715614416575081810a6112fc565b6144208383614358565b8060001904821115614434576144346140d1565b029392505050565b600061281c838361439b565b8281526040602082015260006144616040830184613f30565b949350505050565b6001600160a01b039687168152602081019590955260408501939093526060840191909152909216608082015260a081019190915260c00190565b6000806000606084860312156144b957600080fd5b8351925060208401519150604084015190509250925092565b85815284602082015260a0604082015260006144f160a0830186613f30565b6001600160a01b0394909416606083015250608001529392505050565b634e487b7160e01b600052600160045260246000fdfea26469706673582212201f613536c44ab74ec93e3a416f1a5d336238590b4b5425ae6bcad62053308c1c64736f6c63430008110033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000009ebb4c9e810ceb88422303c96541a041172622350000000000000000000000003feb3d4726df3e09a0420cbb17c80fa238b8b986
-----Decoded View---------------
Arg [0] : developmentAddr (address): 0x9EbB4C9e810CEb88422303c96541a04117262235
Arg [1] : marketingAddr (address): 0x3FEB3D4726DF3E09A0420Cbb17C80fa238B8b986
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000009ebb4c9e810ceb88422303c96541a04117262235
Arg [1] : 0000000000000000000000003feb3d4726df3e09a0420cbb17c80fa238b8b986
Deployed Bytecode Sourcemap
29244:27809:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;55713:215;;;;;;;;;;-1:-1:-1;55713:215:0;;;;;:::i;:::-;;:::i;:::-;;17738:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30164:45;;;;;;;;;;;;;;;;;;;1333:25:1;;;1321:2;1306:18;30164:45:0;1187:177:1;20089:201:0;;;;;;;;;;-1:-1:-1;20089:201:0;;;;;:::i;:::-;;:::i;:::-;;;1990:14:1;;1983:22;1965:41;;1953:2;1938:18;20089:201:0;1825:187:1;30485:27:0;;;;;;;;;;;;;;;;32133:51;;;;;;;;;;-1:-1:-1;32133:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;30770:27;;;;;;;;;;-1:-1:-1;30770:27:0;;;;-1:-1:-1;;;;;30770:27:0;;;;;;-1:-1:-1;;;;;2433:32:1;;;2415:51;;2403:2;2388:18;30770:27:0;2269:203:1;46047:126:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;31911:48::-;;;;;;;;;;-1:-1:-1;31911:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;56630:104;;;;;;;;;;-1:-1:-1;56712:12:0;;56630:104;;30734:27;;;;;;;;;;-1:-1:-1;30734:27:0;;;;-1:-1:-1;;;;;30734:27:0;;;30692:33;;;;;;;;;;;;;;;;31752:45;;;;;;;;;;-1:-1:-1;31752:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;20870:295;;;;;;;;;;-1:-1:-1;20870:295:0;;;;;:::i;:::-;;:::i;30560:31::-;;;;;;;;;;;;;;;;53547:111;;;;;;;;;;-1:-1:-1;53547:111:0;;;;;:::i;:::-;;:::i;50941:421::-;;;;;;;;;;-1:-1:-1;50941:421:0;;;;;:::i;:::-;;:::i;54272:133::-;;;;;;;;;;-1:-1:-1;54272:133:0;;;;;:::i;:::-;;:::i;18700:93::-;;;;;;;;;;-1:-1:-1;18700:93:0;;18783:2;4607:36:1;;4595:2;4580:18;18700:93:0;4465:184:1;54026:110:0;;;;;;;;;;-1:-1:-1;54026:110:0;;;;;:::i;:::-;;:::i;44551:130::-;;;:::i;46874:1129::-;;;;;;;;;;;;;:::i;53275:264::-;;;;;;;;;;-1:-1:-1;53275:264:0;;;;;:::i;:::-;;:::i;21574:238::-;;;;;;;;;;-1:-1:-1;21574:238:0;;;;;:::i;:::-;;:::i;36781:102::-;;;;;;;;;;-1:-1:-1;36781:102:0;;;;;:::i;:::-;;:::i;30377:27::-;;;;;;;;;;;;;;;;43956:308;;;;;;;;;;;;;:::i;30413:27::-;;;;;;;;;;;;;;;;30022:26;;;;;;;;;;;;;;;;30600:35;;;;;;;;;;;;;;;;43279:641;;;;;;:::i;:::-;;:::i;54144:120::-;;;;;;;;;;-1:-1:-1;54144:120:0;;;;;:::i;:::-;;:::i;46181:393::-;;;;;;;;;;-1:-1:-1;46181:393:0;;;;;:::i;:::-;;:::i;:::-;;;;5081:25:1;;;5137:2;5122:18;;5115:34;;;;5054:18;46181:393:0;4907:248:1;30449:27:0;;;;;;;;;;;;;;;;44689:616;;;;;;;;;;-1:-1:-1;44689:616:0;;;;;:::i;:::-;;:::i;45313:726::-;;;;;;;;;;-1:-1:-1;45313:726:0;;;;;:::i;:::-;;:::i;54413:190::-;;;;;;;;;;-1:-1:-1;54413:190:0;;;;;:::i;:::-;;:::i;37173:139::-;;;;;;;;;;-1:-1:-1;37173:139:0;;;;;:::i;:::-;;:::i;36167:118::-;;;;;;;;;;-1:-1:-1;36167:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;36254:21:0;36228:4;36254:21;;;:12;:21;;;;;;;;;36167:118;30218:36;;;;;;;;;;;;;;;;53666:108;;;;;;;;;;-1:-1:-1;53666:108:0;;;;;:::i;:::-;;:::i;32321:52::-;;;;;;;;;;-1:-1:-1;32321:52:0;;;;;:::i;:::-;;;;;;;;;;;;;;56492:130;;;;;;;;;;-1:-1:-1;56492:130:0;;;;;:::i;:::-;-1:-1:-1;;;;;56594:18:0;56566:7;56594:18;;;:9;:18;;;;;;;56492:130;11158:103;;;;;;;;;;;;;:::i;30521:30::-;;;;;;;;;;;;;;;;55494:211;;;;;;;;;;-1:-1:-1;55494:211:0;;;;;:::i;:::-;;:::i;50110:823::-;;;;;;;;;;-1:-1:-1;50110:823:0;;;;;:::i;:::-;;:::i;31277:31::-;;;;;;;;;;-1:-1:-1;31277:31:0;;;;-1:-1:-1;;;31277:31:0;;;;;;48154:1407;;;;;;;;;;;;;:::i;30850:38::-;;;;;;;;;;-1:-1:-1;30850:38:0;;;;-1:-1:-1;;;;;30850:38:0;;;30263:25;;;;;;;;;;;;;;;;36515:205;;;;;;;;;;-1:-1:-1;36515:205:0;;;;;:::i;:::-;;:::i;44414:129::-;;;:::i;30945:41::-;;;;;;;;;;-1:-1:-1;30945:41:0;;;;-1:-1:-1;;;;;30945:41:0;;;53906:112;;;;;;;;;;-1:-1:-1;53906:112:0;;;;;:::i;:::-;;:::i;55126:134::-;;;;;;;;;;-1:-1:-1;55126:134:0;;;;;:::i;:::-;;:::i;10510:87::-;;;;;;;;;;-1:-1:-1;10583:6:0;;-1:-1:-1;;;;;10583:6:0;10510:87;;34827:127;;;;;;;;;;;;;:::i;30806:35::-;;;;;;;;;;-1:-1:-1;30806:35:0;;;;-1:-1:-1;;;;;30806:35:0;;;17957:104;;;;;;;;;;;;;:::i;30897:39::-;;;;;;;;;;-1:-1:-1;30897:39:0;;;;-1:-1:-1;;;;;30897:39:0;;;55268:218;;;;;;;;;;-1:-1:-1;55268:218:0;;;;;:::i;:::-;;:::i;32382:52::-;;;;;;;;;;-1:-1:-1;32382:52:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;32382:52:0;;;31806:44;;;;;;;;;;-1:-1:-1;31806:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;35116:535;;;;;;;;;;;;;:::i;22315:436::-;;;;;;;;;;-1:-1:-1;22315:436:0;;;;;:::i;:::-;;:::i;19362:193::-;;;;;;;;;;-1:-1:-1;19362:193:0;;;;;:::i;:::-;;:::i;36403:104::-;;;;;;;;;;-1:-1:-1;36403:104:0;;;;;:::i;:::-;;:::i;46582:284::-;;;;;;;;;;-1:-1:-1;46582:284:0;;;;;:::i;:::-;;:::i;54747:137::-;;;;;;;;;;-1:-1:-1;54747:137:0;;;;;:::i;:::-;;:::i;30128:27::-;;;;;;;;;;;;;;;;31245:23;;;;;;;;;;-1:-1:-1;31245:23:0;;;;-1:-1:-1;;;31245:23:0;;;;;;53782:116;;;;;;;;;;-1:-1:-1;53782:116:0;;;;;:::i;:::-;;:::i;31046:81::-;;;;;;;;;;;;31085:42;31046:81;;34962:146;;;;;;;;;;-1:-1:-1;34962:146:0;;;;;:::i;:::-;;:::i;31859:43::-;;;;;;;;;;-1:-1:-1;31859:43:0;;;;;:::i;:::-;;;;;;;;;;;;;;34586:233;;;:::i;31648:44::-;;;;;;;;;;-1:-1:-1;31648:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;30995:42;;;;;;;;;;-1:-1:-1;30995:42:0;;;;-1:-1:-1;;;;;30995:42:0;;;31701;;;;;;;;;;-1:-1:-1;31701:42:0;;;;;:::i;:::-;;;;;;;;;;;;;;35659:485;;;;;;;;;;-1:-1:-1;35659:485:0;;;;;:::i;:::-;;:::i;54611:128::-;;;;;;;;;;-1:-1:-1;54611:128:0;;;;;:::i;:::-;;:::i;52000:385::-;;;;;;;;;;-1:-1:-1;52000:385:0;;;;;:::i;:::-;;:::i;51485:204::-;;;;;;;;;;-1:-1:-1;51485:204:0;;;;;:::i;:::-;-1:-1:-1;;;;;51594:19:0;51546:7;51594:19;;;:9;:19;;;;;:26;;51622:28;;;;51652:26;;;;;51594;;51485:204;;;;;6092:25:1;;;6148:2;6133:18;;6126:34;;;;6176:18;;;6169:34;6080:2;6065:18;51485:204:0;5890:319:1;54986:132:0;;;;;;;;;;-1:-1:-1;54986:132:0;;;;;:::i;:::-;;:::i;19618:151::-;;;;;;;;;;-1:-1:-1;19618:151:0;;;;;:::i;:::-;;:::i;32258:54::-;;;;;;;;;;-1:-1:-1;32258:54:0;;;;;:::i;:::-;;;;;;;;;;;;;;32193:56;;;;;;;;;;-1:-1:-1;32193:56:0;;;;;:::i;:::-;;;;;;;;;;;;;;34066:512;;;:::i;29977:24::-;;;;;;;;;;;;;;;;11416:201;;;;;;;;;;-1:-1:-1;11416:201:0;;;;;:::i;:::-;;:::i;31317:29::-;;;;;;;;;;-1:-1:-1;31317:29:0;;;;-1:-1:-1;;;31317:29:0;;;;;;30644:39;;;;;;;;;;;;;;;;30335:33;;;;;;;;;;;;;;;;30069:26;;;;;;;;;;;;;;;;31968:46;;;;;;;;;;-1:-1:-1;31968:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;54892:86;;;;;;;;;;-1:-1:-1;54892:86:0;;;;;:::i;:::-;;:::i;31213:23::-;;;;;;;;;;-1:-1:-1;31213:23:0;;;;-1:-1:-1;;;31213:23:0;;;;;;37028:137;;;;;;;;;;-1:-1:-1;37028:137:0;;;;;:::i;:::-;;:::i;55713:215::-;10396:13;:11;:13::i;:::-;55805:9:::1;55801:118;55820:19:::0;;::::1;55801:118;;;55900:5;55868:16;:29;55885:8;;55894:1;55885:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;55868:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;55868:29:0;:37;;-1:-1:-1;;55868:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;55841:3;::::1;::::0;::::1;:::i;:::-;;;;55801:118;;;;55713:215:::0;;:::o;17738:100::-;17792:13;17825:5;17818:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17738:100;:::o;20089:201::-;20172:4;9141:10;20228:32;9141:10;20244:7;20253:6;20228:8;:32::i;:::-;20278:4;20271:11;;;20089:201;;;;;:::o;46047:126::-;46143:10;46130:24;;;;:12;:24;;;;;;;;;46123:40;;;;;;;;;;;;;;;;;46094:16;;46123:40;;;46130:24;46123:40;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;46123:40:0;;;;;;;;;;;;;;;;;;;;;;46047:126;:::o;20870:295::-;21001:4;9141:10;21059:38;21075:4;9141:10;21090:6;21059:15;:38::i;:::-;21108:27;21118:4;21124:2;21128:6;21108:9;:27::i;:::-;-1:-1:-1;21153:4:0;;20870:295;-1:-1:-1;;;;20870:295:0:o;53547:111::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;53622:11:::1;:26:::0;;;::::1;;-1:-1:-1::0;;;53622:26:0::1;-1:-1:-1::0;;;;53622:26:0;;::::1;::::0;;;::::1;::::0;;53547:111::o;50941:421::-;51011:10;51001:21;;;;:9;:21;;;;;:28;:38;-1:-1:-1;51001:38:0;;;:52;;;51052:1;51043:6;:10;51001:52;50993:61;;;;;;51085:10;51075:21;;;;:9;:21;;;;;:28;;;51106:15;-1:-1:-1;51067:55:0;;;;;;51171:6;51155:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;51200:10:0;51190:21;;;;:9;:21;;;;;:38;;51222:6;;51190:21;:38;;51222:6;;51190:38;:::i;:::-;;;;-1:-1:-1;51259:47:0;;-1:-1:-1;51280:4:0;51287:10;51299:6;51259:12;:47::i;:::-;51324:28;;1333:25:1;;;51333:10:0;;51324:28;;1321:2:1;1306:18;51324:28:0;;;;;;;50941:421;:::o;54272:133::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;54359:19:::1;:36:::0;;-1:-1:-1;;;;;;54359:36:0::1;-1:-1:-1::0;;;;;54359:36:0;;;::::1;::::0;;;::::1;::::0;;54272:133::o;54026:110::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;54101:15:::1;:25:::0;;-1:-1:-1;;;;;;54101:25:0::1;-1:-1:-1::0;;;;;54101:25:0;;;::::1;::::0;;;::::1;::::0;;54026:110::o;44551:130::-;44623:1;44611:9;:13;44603:22;;;;;;44662:9;44638:20;;:33;;;;;;;:::i;:::-;;;;-1:-1:-1;;44551:130:0:o;46874:1129::-;29677:11;;-1:-1:-1;;;29677:11:0;;;;29676:12;29668:21;;;;;;29702:11;:18;;-1:-1:-1;;;;29702:18:0;-1:-1:-1;;;29702:18:0;;;46956:10:::1;29702:18:::0;46941:26;;;:14:::1;:26:::0;;;;;;29702:18;46941:26:::1;46940:27;46932:36;;;::::0;::::1;;47016:10;46994:6;47003:24:::0;;;:12:::1;:24;::::0;;;;:40;;47076:34:::1;::::0;:22:::1;:34::i;:::-;47056:54:::0;-1:-1:-1;47134:3:0;;47131:531:::1;;47160:6;47155:494;47176:1;47172;:5;47155:494;;;47234:10;47205:13;47221:24:::0;;;:12:::1;:24;::::0;;;;:36;;47255:1;;47221:36;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;-1:-1:-1;;;;;47221:36:0::1;::::0;-1:-1:-1;47293:29:0::1;47221:36:::0;47293:22:::1;:29::i;:::-;47363:10;47343:31;::::0;;;:19:::1;:31;::::0;;;;:39;;47278:44;;-1:-1:-1;47278:44:0;;47343:31;;;:39:::1;::::0;47278:44;;47343:39:::1;:::i;:::-;::::0;;;-1:-1:-1;;;;;;;47403:24:0;::::1;;::::0;;;:17:::1;:24;::::0;;;;:32;;47431:4;;47403:24;:32:::1;::::0;47431:4;;47403:32:::1;:::i;:::-;::::0;;;-1:-1:-1;47456:17:0::1;::::0;-1:-1:-1;47469:4:0;47456:17;::::1;:::i;:::-;;;47497:4;47475:18;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;47549:15:0::1;::::0;-1:-1:-1;;;;;47523:23:0;::::1;;::::0;;;:16:::1;:23;::::0;;;;:41;47620:3:::1;47622:1;47620::::0;:3:::1;:::i;:::-;47615:1;:8:::0;47612:20:::1;;47625:5;;;;47612:20;47184:465;;47179:3;;;;;:::i;:::-;;;;47155:494;;;;47131:531;47677:11:::0;;47674:312:::1;;47726:9;47706:16;;:29;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;47774:10:0::1;47752:33;::::0;;;:21:::1;:33;::::0;;;;:46;;47789:9;;47752:33;:46:::1;::::0;47789:9;;47752:46:::1;:::i;:::-;::::0;;;-1:-1:-1;;47846:15:0::1;::::0;47832:10:::1;47815:28;::::0;;;:16:::1;:28;::::0;;;;:46;;;;47878:34:::1;::::0;47902:9;47878:11:::1;:34::i;:::-;47934:38;::::0;1333:25:1;;;47950:10:0::1;::::0;47934:38:::1;::::0;1321:2:1;1306:18;47934:38:0::1;;;;;;;47674:312;-1:-1:-1::0;;29747:11:0;:19;;-1:-1:-1;;;;29747:19:0;;;46874:1129::o;53275:264::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;53379:6:::1;53368:17;;:7;:17;;::::0;53360:42:::1;;;::::0;-1:-1:-1;;;53360:42:0;;7861:2:1;53360:42:0::1;::::0;::::1;7843:21:1::0;7900:2;7880:18;;;7873:30;-1:-1:-1;;;7919:18:1;;;7912:43;7972:18;;53360:42:0::1;;;;;;;;;53418:7;53415:52;;;53427:11;:18:::0;;-1:-1:-1;;;;53447:18:0;-1:-1:-1;;;53447:18:0;;;53415:52:::1;53482:6;53479:51;;;53490:11;:19:::0;;-1:-1:-1;;;;53511:17:0;-1:-1:-1;;;53511:17:0::1;::::0;;53479:51:::1;53275:264:::0;;:::o;21574:238::-;21662:4;9141:10;21718:64;9141:10;21734:7;21771:10;21743:25;9141:10;21734:7;21743:9;:25::i;:::-;:38;;;;:::i;:::-;21718:8;:64::i;36781:102::-;-1:-1:-1;;;;;36860:13:0;36834:4;36860:13;;;:4;:13;;;;;;;;;36781:102::o;43956:308::-;29835:19;;-1:-1:-1;;;;;29835:19:0;29821:10;:33;29813:42;;;;;;29677:11:::1;::::0;-1:-1:-1;;;29677:11:0;::::1;;;29676:12;29668:21;;;::::0;::::1;;29702:11;:18:::0;;-1:-1:-1;;;;29702:18:0::1;-1:-1:-1::0;;;29702:18:0::1;::::0;;44034:12:::2;::::0;44026:44:::2;;;::::0;-1:-1:-1;;;44026:44:0;;8203:2:1;44026:44:0::2;::::0;::::2;8185:21:1::0;8242:2;8222:18;;;8215:30;-1:-1:-1;;;8261:18:1;;;8254:46;8317:18;;44026:44:0::2;8001:340:1::0;44026:44:0::2;44102:12;::::0;;;;;44083:16:::2;44127:24;44102:12:::0;;44127:24:::2;:::i;:::-;::::0;;;-1:-1:-1;;44176:19:0::2;::::0;44164:42:::2;::::0;-1:-1:-1;;;;;44176:19:0::2;44197:8:::0;44164:11:::2;:42::i;:::-;44224:30;::::0;1333:25:1;;;44233:10:0::2;::::0;44224:30:::2;::::0;1321:2:1;1306:18;44224:30:0::2;;;;;;;-1:-1:-1::0;29747:11:0::1;:19:::0;;-1:-1:-1;;;;29747:19:0::1;::::0;;43956:308::o;43279:641::-;43390:16;;;43404:1;43390:16;;;;;;;;43344:7;;;;43390:16;43404:1;43390:16;;;;;;;;-1:-1:-1;;43429:7:0;;:14;;;-1:-1:-1;;;43429:14:0;;;;43366:40;;-1:-1:-1;;;;;;43429:7:0;;;;:12;;-1:-1:-1;43429:14:0;;;;;;;;;;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43419:4;43424:1;43419:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;43419:24:0;;;-1:-1:-1;;;;;43419:24:0;;;;;43474:4;43456;43461:1;43456:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;43456:23:0;;;:7;;;;;;;;;;;:23;43492:13;43508:30;43526:12;43508:15;:30;:::i;:::-;43575:7;;:89;;-1:-1:-1;;;43575:89:0;;43492:46;;-1:-1:-1;43551:21:0;;-1:-1:-1;;;;;43575:7:0;;;;:29;;43612:9;;43575:89;;43551:21;;43626:4;;31085:42;;43492:46;;43575:89;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;43575:89:0;;;;;;;;;;;;:::i;:::-;43551:113;;43677:24;43712:7;43737:1;43720:7;:14;:18;;;;:::i;:::-;43712:27;;;;;;;;:::i;:::-;;;;;;;43677:63;;43774:1;43756:16;:19;43753:122;;;43798:48;;;43818:9;5081:25:1;;5137:2;5122:18;;5115:34;;;43806:10:0;;43798:48;;5054:18:1;43798:48:0;;;;;;;43894:16;43279:641;-1:-1:-1;;;;;43279:641:0:o;54144:120::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;54223:20:::1;:31:::0;;-1:-1:-1;;;;;;54223:31:0::1;-1:-1:-1::0;;;;;54223:31:0;;;::::1;::::0;;;::::1;::::0;;54144:120::o;46181:393::-;-1:-1:-1;;;;;46288:18:0;;46244:6;46288:18;;;:12;:18;;;;;:34;;46244:6;46335:196;46356:1;46352;:5;46335:196;;;-1:-1:-1;;;;;46450:18:0;;;;;;:12;:18;;;;;:30;;46427:54;;46450:18;46478:1;;46450:30;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;46450:30:0;46427:22;:54::i;:::-;46414:67;;;;:::i;:::-;;-1:-1:-1;46506:3:0;46508:1;46506;:3;:::i;:::-;46498:20;;46511:5;46498:20;46359:3;;;;:::i;:::-;;;;46335:196;;;;46181:393;;;:::o;44689:616::-;44758:17;44764:10;44758:5;:17::i;:::-;44757:18;:37;;;;;44780:14;44786:7;44780:5;:14::i;:::-;44779:15;44757:37;44749:46;;;;;;44834:10;44816:29;;;;:17;:29;;;;;;-1:-1:-1;;;;;44816:40:0;;;:29;;:40;44808:75;;;;-1:-1:-1;;;44808:75:0;;10569:2:1;44808:75:0;;;10551:21:1;10608:2;10588:18;;;10581:30;-1:-1:-1;;;10627:18:1;;;10620:52;10689:18;;44808:75:0;10367:346:1;44808:75:0;44978:10;44960:29;;;;:17;:29;;;;;;;;:39;;-1:-1:-1;;;;;44960:39:0;;-1:-1:-1;;;;;;44960:39:0;;;;;;;;45046:21;;;:12;:21;;;;;:47;;44960:39;45046:47;;;;;;;;;;;;;;;;;;;;;;;;45118:37;;45189:47;;;:35;;:47;;;;;:55;;;45266:24;:29;;44960:39;;45266:24;;:29;;44960:39;;45266:29;:::i;:::-;;;;-1:-1:-1;;;;44689:616:0:o;45313:726::-;-1:-1:-1;;;;;45384:21:0;;;;;;:12;:21;;;;;;;;45420:10;45384:47;;:35;;:47;;;;;;:52;;45376:91;;;;-1:-1:-1;;;45376:91:0;;10920:2:1;45376:91:0;;;10902:21:1;10959:2;10939:18;;;10932:30;10998:29;10978:18;;;10971:57;11045:18;;45376:91:0;10718:351:1;45376:91:0;45564:10;45532:29;;;;:17;:29;;;;;;;;:42;;-1:-1:-1;;;;;;45532:42:0;;;;;-1:-1:-1;;;;;45599:21:0;;;;;:12;:21;;;;;;:47;;;45532:42;45599:35;;:47;;;;;;45735:21;;;;:37;;45599:47;;45735:37;45828:41;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;45784:21:0;;;;;:12;:21;;;;;;;45828:41;;;45815:9;45828:41;45815:5;:9;:::i;:::-;45784:41;;;;;;;;:::i;:::-;;;;;;;;;;;;;:85;;-1:-1:-1;;;;;;45784:85:0;-1:-1:-1;;;;;45784:85:0;;;;;;45881:21;;;;;:12;:21;;;;;;:36;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;45881:36:0;;;;;-1:-1:-1;;;;;;45881:36:0;;;;;;;;;-1:-1:-1;;;;;45929:21:0;;;;:12;:21;;;;;;45965:10;45929:47;;45881:36;45929:35;;;:47;;;;;:51;;;46000:24;:29;;45881:36;;46000:24;;:29;;45881:36;;46000:29;:::i;:::-;;;;-1:-1:-1;;;;;45313:726:0:o;54413:190::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;54488:19:::1;54551:3;54533:14;54511:19;:17;:19::i;:::-;:36;;;;:::i;:::-;54510:44;;;;:::i;:::-;54567:12;:26:::0;-1:-1:-1;;54413:190:0:o;37173:139::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;-1:-1:-1;;;;;37237:13:0::1;37253:5;37237:13:::0;;;:4:::1;:13;::::0;;;;;;;:21;;-1:-1:-1;;37237:21:0;;::::1;::::0;;;37271:23;;;;;;:31;;;;::::1;::::0;;37173:139::o;53666:108::-;10396:13;:11;:13::i;:::-;53742:12:::1;:22:::0;;-1:-1:-1;;;;;;53742:22:0::1;-1:-1:-1::0;;;;;53742:22:0;;;::::1;::::0;;;::::1;::::0;;53666:108::o;11158:103::-;10396:13;:11;:13::i;:::-;11223:30:::1;11250:1;11223:18;:30::i;:::-;11158:103::o:0;55494:211::-;10396:13;:11;:13::i;:::-;55583:9:::1;55579:117;55598:19:::0;;::::1;55579:117;;;55678:4;55646:16;:29;55663:8;;55672:1;55663:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;55646:29:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;55646:29:0;:36;;-1:-1:-1;;55646:36:0::1;::::0;::::1;;::::0;;;::::1;::::0;;55619:3;::::1;::::0;::::1;:::i;:::-;;;;55579:117;;50110:823:::0;50182:1;50173:6;:10;:28;;;;;50200:1;50187:10;;:14;50173:28;50165:37;;;;;;10583:6;;-1:-1:-1;;;;;10583:6:0;50223:10;:21;;;;:51;;-1:-1:-1;50264:9:0;50249:25;;;;:14;:25;;;;;;;;50248:26;50223:51;:82;;;;-1:-1:-1;50294:10:0;50279:26;;;;:14;:26;;;;;;;;50278:27;50223:82;50215:91;;;;;;50319:18;50378:10;;50359:16;:29;;;;:::i;:::-;50340:49;;:15;:49;:::i;:::-;50435:10;50456:1;50425:21;;;:9;:21;;;;;:28;50319:70;;-1:-1:-1;50425:32:0;50422:351;;50524:10;50514:21;;;;:9;:21;;;;;:38;;50546:6;;50514:21;:38;;50546:6;;50514:38;:::i;:::-;;;;-1:-1:-1;50422:351:0;;-1:-1:-1;50422:351:0;;50614:10;50604:21;;;;:9;:21;;;;;:37;;;50691:10;;50658:30;;;:43;50718:28;;:41;;;50422:351;50801:6;50785:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;50820:47:0;;-1:-1:-1;50833:10:0;50853:4;50860:6;50820:12;:47::i;:::-;50885:38;;1333:25:1;;;50904:10:0;;50892;;50885:38;;1321:2:1;1306:18;50885:38:0;;;;;;;;50152:781;50110:823;:::o;48154:1407::-;29677:11;;48207;;-1:-1:-1;;;29677:11:0;;;;29676:12;29668:21;;;;;;29702:11;:18;;-1:-1:-1;;;;29702:18:0;-1:-1:-1;;;29702:18:0;;;48257:10:::1;29702:18:::0;48242:26;;;:14:::1;:26:::0;;;;;;29702:18;48242:26:::1;48241:27;48233:36;;;::::0;::::1;;48320:10;48283:18;51594:19:::0;;;:9;:19;;;;;:26;48366:21:::1;::::0;48352:35;::::1;;48344:76;;;::::0;-1:-1:-1;;;48344:76:0;;11838:2:1;48344:76:0::1;::::0;::::1;11820:21:1::0;11877:2;11857:18;;;11850:30;11916:31;11896:18;;;11889:59;11965:18;;48344:76:0::1;11636:353:1::0;48344:76:0::1;48476:1;48441:34;48464:10;48441:22;:34::i;:::-;:36;48433:74;;;::::0;-1:-1:-1;;;48433:74:0;;12196:2:1;48433:74:0::1;::::0;::::1;12178:21:1::0;12235:2;12215:18;;;12208:30;12274:27;12254:18;;;12247:55;12319:18;;48433:74:0::1;11994:349:1::0;48433:74:0::1;48556:10;48546:21;::::0;;;:9:::1;:21;::::0;;;;;48571:16:::1;::::0;48528:39:::1;::::0;:15:::1;:39;:::i;:::-;:60;48520:86;;;::::0;-1:-1:-1;;;48520:86:0;;12550:2:1;48520:86:0::1;::::0;::::1;12532:21:1::0;12589:2;12569:18;;;12562:30;-1:-1:-1;;;12608:18:1;;;12601:44;12662:18;;48520:86:0::1;12348:338:1::0;48520:86:0::1;48684:10;48675:20;::::0;;;:8:::1;:20;::::0;;;;;48699:16:::1;::::0;48657:38:::1;::::0;:15:::1;:38;:::i;:::-;:59;48649:85;;;::::0;-1:-1:-1;;;48649:85:0;;12550:2:1;48649:85:0::1;::::0;::::1;12532:21:1::0;12589:2;12569:18;;;12562:30;-1:-1:-1;;;12608:18:1;;;12601:44;12662:18;;48649:85:0::1;12348:338:1::0;48649:85:0::1;48758:10;48747:22;::::0;;;:10:::1;:22;::::0;;;;:27;;48773:1:::1;::::0;48747:22;:27:::1;::::0;48773:1;;48747:27:::1;:::i;:::-;::::0;;;-1:-1:-1;;48801:10:0::1;48787:25;::::0;;;:13:::1;:25;::::0;;;;:30;;48816:1:::1;::::0;48787:25;:30:::1;::::0;48816:1;;48787:30:::1;:::i;:::-;::::0;;;-1:-1:-1;;48963:10:0::1;48952:22;::::0;;;:10:::1;:22;::::0;;;;;48978:1:::1;48952:27:::0;48949:188:::1;;49008:10;49022:1;48997:22:::0;;;:10:::1;:22;::::0;;;;;;;:26;;;49040:9:::1;:21:::0;;;;;49064:15:::1;49040:39:::0;;49096:27:::1;::::0;:15:::1;:27::i;:::-;49180:15;49279:1;49230:15;49246:16;49263:10;49213:61;;;;;;;;;12876:19:1::0;;;12920:2;12911:12;;12904:28;;;;12970:2;12966:15;-1:-1:-1;;12962:53:1;12957:2;12948:12;;12941:75;13041:2;13032:12;;12691:359;49213:61:0::1;;;;;;;;;;;;;49203:72;;;;;;49198:78;;:82;;;;:::i;:::-;49180:100;;49296:10;49310:1;49296:15:::0;49293:37:::1;;49313:15;49327:1;49313:15:::0;::::1;:::i;:::-;;;49293:37;49345:10;49359:1;49345:15:::0;49342:134:::1;;49378:29;49396:10;49378:17;:29::i;:::-;49433:10;49424:20;::::0;;;:8:::1;:20;::::0;;;;49447:15:::1;49424:38:::0;;49342:134:::1;49493:32;::::0;1333:25:1;;;49502:10:0::1;::::0;49493:32:::1;::::0;1321:2:1;1306:18;49493:32:0::1;;;;;;;49538:13;;29747:11:::0;:19;;-1:-1:-1;;;;29747:19:0;;;48154:1407;:::o;36515:205::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;36602:9:::1;36598:113;36617:19:::0;;::::1;36598:113;;;36693:4;36665:12;:25;36678:8;;36687:1;36678:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;36665:25:0::1;::::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;36665:25:0;:32;;-1:-1:-1;;36665:32:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36638:3;::::1;::::0;::::1;:::i;:::-;;;;36598:113;;44414:129:::0;44490:1;44478:9;:13;44470:22;;;;;;44524:9;44505:15;;:28;;;;;;;:::i;53906:112::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;53982:16:::1;:26:::0;;-1:-1:-1;;;;;;53982:26:0::1;-1:-1:-1::0;;;;;53982:26:0;;;::::1;::::0;;;::::1;::::0;;53906:112::o;55126:134::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;55217:2:::1;55209:4;:10;;55187:33;;;::::0;::::1;;55234:9;:16:::0;55126:134::o;34827:127::-;31085:42;34877:7;56594:18;;;:9;:18;;;;34906:12;;:38;;;;:::i;:::-;34899:45;;34827:127;:::o;17957:104::-;18013:13;18046:7;18039:14;;;;;:::i;55268:218::-;10396:13;:11;:13::i;:::-;55343::::1;;55358:1;55343:16:::0;55340:137:::1;;55377:18;:32:::0;;;55442:15:::1;55426:13;:31:::0;55340:137:::1;55268:218:::0;:::o;35116:535::-;35224:12;;35284:18;;;-1:-1:-1;;;35284:18:0;;;;35154;;-1:-1:-1;;;;;35224:12:0;;35154:18;;;;35224:12;;35284:16;;:18;;;;;;;;;;;;;;;35224:12;35284:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35250:52;-1:-1:-1;;;;;35250:52:0;;;-1:-1:-1;;;;;35250:52:0;;;35389:8;35378;:19;35375:237;;;35481:8;35459:17;35473:2;35459;:17;:::i;:::-;35447:30;;:8;:30;:::i;:::-;35446:43;;;;:::i;:::-;35433:56;;35375:237;;;35590:8;35568:17;35582:2;35568;:17;:::i;:::-;35556:30;;:8;:30;:::i;:::-;35555:43;;;;:::i;:::-;35542:56;;35375:237;35624:17;;;35116:535;:::o;22315:436::-;22408:4;9141:10;22408:4;22491:25;9141:10;22508:7;22491:9;:25::i;:::-;22464:52;;22555:15;22535:16;:35;;22527:85;;;;-1:-1:-1;;;22527:85:0;;15396:2:1;22527:85:0;;;15378:21:1;15435:2;15415:18;;;15408:30;15474:34;15454:18;;;15447:62;-1:-1:-1;;;15525:18:1;;;15518:35;15570:19;;22527:85:0;15194:401:1;22527:85:0;22648:60;22657:5;22664:7;22692:15;22673:16;:34;22648:8;:60::i;19362:193::-;19441:4;9141:10;19497:28;9141:10;19514:2;19518:6;19497:9;:28::i;36403:104::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;-1:-1:-1;;;;;36469:21:0::1;;::::0;;;:12:::1;:21;::::0;;;;:28;;-1:-1:-1;;36469:28:0::1;36493:4;36469:28;::::0;;36403:104::o;46582:284::-;-1:-1:-1;;;;;46708:22:0;;46648:7;46708:22;;;:16;:22;;;;;;46690:15;;46648:7;;46690:40;;;:::i;:::-;46842:12;;-1:-1:-1;;;;;46842:12:0;56566:7;56594:18;;;:9;:18;;;;;;46670:60;;-1:-1:-1;46810:19:0;:17;:19::i;:::-;:45;;;;:::i;:::-;-1:-1:-1;;;;;46782:15:0;;;;;;:9;:15;;;;;;;;:22;56594:9;:18;;;;;;;46764:40;;;;:::i;:::-;46751:54;;:9;:54;:::i;:::-;46750:106;;;;:::i;:::-;46743:113;46582:284;-1:-1:-1;;;46582:284:0:o;54747:137::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;54852:10:::1;:22:::0;54747:137::o;53782:116::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;53860:18:::1;:28:::0;;-1:-1:-1;;;;;;53860:28:0::1;-1:-1:-1::0;;;;;53860:28:0;;;::::1;::::0;;;::::1;::::0;;53782:116::o;34962:146::-;-1:-1:-1;;;;;35074:17:0;;35014:7;35074:17;;;:8;:17;;;;;:24;;;;35043:28;;:55;;35074:24;35043:55;:::i;34586:233::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;34651:21:::1;34732:20;;34717:12;;34699:15;;34675:21;:39;;;;:::i;:::-;:54;;;;:::i;:::-;:77;;;;:::i;:::-;34777:16;::::0;34651:101;;-1:-1:-1;34765:44:0::1;::::0;-1:-1:-1;;;;;34777:16:0::1;34651:101:::0;34765:11:::1;:44::i;35659:485::-:0;35779:16;;;35793:1;35779:16;;;;;;;;35734:7;;;;35779:16;35793:1;35779:16;;;;;;;;;;-1:-1:-1;35779:16:0;35755:40;;35811:4;35819:1;35811:9;35808:202;;35853:7;;;;;;;;;-1:-1:-1;;;;;35853:7:0;-1:-1:-1;;;;;35853:12:0;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35843:4;35848:1;35843:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;35843:24:0;;;-1:-1:-1;;;;;35843:24:0;;;;;35887:4;35869;35874:1;35869:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;35869:23:0;;;-1:-1:-1;;;;;35869:23:0;;;;;35808:202;;;35914:4;35922:1;35914:9;35911:99;;35965:4;35947;35952:1;35947:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35947:23:0;;;:7;;;;;;;;;;:23;;;;35982:7;;:14;;;-1:-1:-1;;;35982:14:0;;;;:7;;;;;:12;;:14;;;;;35947:7;;35982:14;;;;;:7;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35972:4;35977:1;35972:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1;;;;;35972:24:0;;;-1:-1:-1;;;;;35972:24:0;;;;;35911:99;36044:7;;:37;;-1:-1:-1;;;36044:37:0;;36016:25;;-1:-1:-1;;;;;36044:7:0;;:21;;:37;;36066:8;;36076:4;;36044:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;36044:37:0;;;;;;;;;;;;:::i;:::-;36016:65;;36101:10;36132:1;36112:10;:17;:21;;;;:::i;:::-;36101:33;;;;;;;;:::i;:::-;;;;;;;36094:40;;;;35659:485;;;;:::o;54611:128::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;54692:21:::1;:37:::0;54611:128::o;52000:385::-;29933:20;;52085:14;;-1:-1:-1;;;;;29933:20:0;29919:10;:34;29911:43;;;;;;52116:4:::1;52124:1;52116:9:::0;52113:162:::1;;52146:6;52143:51;;;52154:11;:18:::0;;-1:-1:-1;;;;52174:18:0;-1:-1:-1;;;52174:18:0;;;52143:51:::1;52214:6;52210:52;;52222:11;:19:::0;;-1:-1:-1;;;;52243:17:0;-1:-1:-1;;;52243:17:0::1;::::0;;52210:52:::1;52290:4;52297:1;52290:8:::0;52287:63:::1;;52316:11;:20:::0;;;::::1;;-1:-1:-1::0;;;52316:20:0::1;-1:-1:-1::0;;;;52316:20:0;;::::1;;::::0;;52000:385;;;;:::o;54986:132::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;55076:2:::1;55068:4;:10;;55046:33;;;::::0;::::1;;55093:8;:15:::0;54986:132::o;19618:151::-;-1:-1:-1;;;;;19734:18:0;;;19707:7;19734:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;19618:151::o;34066:512::-;10396:13;:11;:13::i;:::-;29546:15:::1;:22:::0;;-1:-1:-1;;;;29546:22:0::1;-1:-1:-1::0;;;29546:22:0::1;::::0;;34160:17:::2;29546:22:::0;34225:3:::2;34210:11;34160:17:::0;34219:2:::2;34210:11;:::i;:::-;34209:19;;;;:::i;:::-;34190:38:::0;-1:-1:-1;34241:18:0::2;34262:17;34190:38:::0;34262:6;:17:::2;:::i;:::-;34241:38;;34292:30;34306:4;34313:8;34292:5;:30::i;:::-;34341:16;::::0;34335:35:::2;::::0;-1:-1:-1;;;;;34341:16:0::2;34359:10:::0;34335:5:::2;:35::i;:::-;34415:7;::::0;34383:51:::2;::::0;34400:4:::2;::::0;-1:-1:-1;;;;;34415:7:0::2;34425:8:::0;34383::::2;:51::i;:::-;34447:7;::::0;-1:-1:-1;;;;;34447:7:0::2;:23;34478:9;34513:4;34519:8:::0;34447:7:::2;::::0;34532::::2;10583:6:::0;;-1:-1:-1;;;;;10583:6:0;;10510:87;34532:7:::2;34540:15;34447:121;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;29595:15:0::1;:23:::0;;-1:-1:-1;;;;29595:23:0::1;::::0;;-1:-1:-1;;;;34066:512:0:o;11416:201::-;10396:13;:11;:13::i;:::-;-1:-1:-1;;;;;11505:22:0;::::1;11497:73;;;::::0;-1:-1:-1;;;11497:73:0;;17062:2:1;11497:73:0::1;::::0;::::1;17044:21:1::0;17101:2;17081:18;;;17074:30;17140:34;17120:18;;;17113:62;-1:-1:-1;;;17191:18:1;;;17184:36;17237:19;;11497:73:0::1;16860:402:1::0;11497:73:0::1;11581:28;11600:8;11581:18;:28::i;54892:86::-:0;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;54952:9:::1;:16:::0;54892:86::o;37028:137::-;29340:12;;-1:-1:-1;;;;;29340:12:0;29326:10;:26;29318:35;;;;;;37103:12:::1;::::0;-1:-1:-1;;;;;37103:12:0;;::::1;37092:23:::0;;::::1;::::0;37089:38:::1;;37117:8;::::0;::::1;37089:38;37139:16;37147:7;37139;:16::i;10675:132::-:0;10583:6;;-1:-1:-1;;;;;10583:6:0;9141:10;10739:23;10731:68;;;;-1:-1:-1;;;10731:68:0;;17469:2:1;10731:68:0;;;17451:21:1;;;17488:18;;;17481:30;17547:34;17527:18;;;17520:62;17599:18;;10731:68:0;17267:356:1;26342:380:0;-1:-1:-1;;;;;26478:19:0;;26470:68;;;;-1:-1:-1;;;26470:68:0;;17830:2:1;26470:68:0;;;17812:21:1;17869:2;17849:18;;;17842:30;17908:34;17888:18;;;17881:62;-1:-1:-1;;;17959:18:1;;;17952:34;18003:19;;26470:68:0;17628:400:1;26470:68:0;-1:-1:-1;;;;;26557:21:0;;26549:68;;;;-1:-1:-1;;;26549:68:0;;18235:2:1;26549:68:0;;;18217:21:1;18274:2;18254:18;;;18247:30;18313:34;18293:18;;;18286:62;-1:-1:-1;;;18364:18:1;;;18357:32;18406:19;;26549:68:0;18033:398:1;26549:68:0;-1:-1:-1;;;;;26630:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;26682:32;;1333:25:1;;;26682:32:0;;1306:18:1;26682:32:0;;;;;;;26342:380;;;:::o;27013:453::-;27148:24;27175:25;27185:5;27192:7;27175:9;:25::i;:::-;27148:52;;-1:-1:-1;;27215:16:0;:37;27211:248;;27297:6;27277:16;:26;;27269:68;;;;-1:-1:-1;;;27269:68:0;;18638:2:1;27269:68:0;;;18620:21:1;18677:2;18657:18;;;18650:30;18716:31;18696:18;;;18689:59;18765:18;;27269:68:0;18436:353:1;27269:68:0;27381:51;27390:5;27397:7;27425:6;27406:16;:25;27381:8;:51::i;:::-;27137:329;27013:453;;;:::o;37754:2208::-;-1:-1:-1;;;;;36254:21:0;;36228:4;36254:21;;;:12;:21;;;;;;;;37901:49;;;-1:-1:-1;;;;;;36254:21:0;;36228:4;36254:21;;;:12;:21;;;;;;;;37926:24;37897:323;;;37983:16;;-1:-1:-1;;;;;37983:16:0;;;37973:26;;;;37969:159;;38048:13;;:39;;38065:21;38048:39;:::i;:::-;38029:15;:59;38021:89;;;;-1:-1:-1;;;38021:89:0;;18996:2:1;38021:89:0;;;18978:21:1;19035:2;19015:18;;;19008:30;-1:-1:-1;;;19054:18:1;;;19047:48;19112:18;;38021:89:0;18794:342:1;38021:89:0;38144:39;38157:6;38165:9;38176:6;38144:12;:39::i;37897:323::-;38267:12;;-1:-1:-1;;;;;38254:25:0;;;38267:12;;38254:25;:64;;;;-1:-1:-1;;;;;;38283:19:0;;;;;;:11;:19;;;;;;38306:12;38283:35;38254:64;38251:114;;;38336:15;38344:6;38336:7;:15::i;:::-;-1:-1:-1;;;;;38416:27:0;;;;;;:16;:27;;;;;;;;38411:272;;38481:18;;38465:12;:34;;:60;;;;-1:-1:-1;38513:12:0;;-1:-1:-1;;;;;38503:22:0;;;38513:12;;38503:22;38465:60;38462:121;;;38547:18;38555:9;38547:7;:18::i;:::-;38607;;:23;;;;:61;;;38650:18;;38634:12;:34;;38607:61;38599:70;;;;;;38732:13;38738:6;38732:5;:13::i;:::-;38731:14;:35;;;;;38750:16;38756:9;38750:5;:16::i;:::-;38749:17;38731:35;38723:44;;;;;;38798:12;;38788:6;:22;;38780:31;;;;;;38829:7;;-1:-1:-1;;;38829:7:0;;;;38828:8;:26;;;;;38853:1;38840:10;;:14;38828:26;:55;;;;-1:-1:-1;38871:12:0;;-1:-1:-1;;;;;38858:25:0;;;38871:12;;38858:25;38828:55;38824:109;;;38902:17;38908:10;;38902:5;:17::i;:::-;39081:12;;38960:6;;38945:12;;;;;;-1:-1:-1;;;;;39081:12:0;;;39071:22;;;;39067:140;;39134:25;39142:6;39150:8;;39134:7;:25::i;:::-;39112:47;;-1:-1:-1;39112:47:0;-1:-1:-1;39189:4:0;;-1:-1:-1;39067:140:0;39255:12;;-1:-1:-1;;;;;39255:12:0;;;39242:25;;;;39238:111;;39309:26;39317:6;39325:9;;39309:7;:26::i;:::-;39286:49;;-1:-1:-1;39286:49:0;-1:-1:-1;39238:111:0;39364:10;39361:144;;;39433:7;:5;:7::i;:::-;39426:14;;:4;:14;:::i;:::-;-1:-1:-1;;;;;39392:19:0;;;;;;:8;:19;;;;;:48;;:19;;;:48;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;39457:19:0;;;;;;:8;:19;;;;;:26;;:34;;39487:4;;39457:19;:34;;39487:4;;39457:34;:::i;:::-;;;;-1:-1:-1;;39361:144:0;39549:12;;-1:-1:-1;;;;;39549:12:0;;;39539:22;;;;39536:94;;-1:-1:-1;;;;;39579:22:0;;;;;;:11;:22;;;;;39604:12;39579:37;;39536:94;39664:37;39677:6;39685:9;39696:4;39664:12;:37::i;:::-;39751:15;;39748:85;;39784:35;39797:6;39805:13;39784:12;:35::i;:::-;39874:14;;39871:82;;39906:33;39918:6;39926:12;39906:11;:33::i;:::-;37884:2078;;;;37754:2208;;;:::o;55979:505::-;-1:-1:-1;;;;;56124:20:0;;56116:29;;;;;;-1:-1:-1;;;;;56166:23:0;;56158:32;;;;;;-1:-1:-1;;;;;56594:18:0;;56207:21;56594:18;;;:9;:18;;;;;;56269:23;;;;56261:32;;;;;;56333;56350:6;56358;56333:16;:32::i;:::-;56391:30;56403:9;56414:6;56391:11;:30::i;:::-;56456:9;-1:-1:-1;;;;;56439:35:0;56448:6;-1:-1:-1;;;;;56439:35:0;;56467:6;56439:35;;;;1333:25:1;;1321:2;1306:18;;1187:177;56439:35:0;;;;;;;;56103:381;55979:505;;;:::o;52393:185::-;52471:9;52486:8;-1:-1:-1;;;;;52486:13:0;52507:6;52486:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;52470:48;;;52539:4;52531:37;;;;-1:-1:-1;;;52531:37:0;;19553:2:1;52531:37:0;;;19535:21:1;19592:2;19572:18;;;19565:30;-1:-1:-1;;;19611:18:1;;;19604:50;19671:18;;52531:37:0;19351:344:1;11777:191:0;11870:6;;;-1:-1:-1;;;;;11887:17:0;;;-1:-1:-1;;;;;;11887:17:0;;;;;;;11920:40;;11870:6;;;11887:17;11870:6;;11920:40;;11851:16;;11920:40;11840:128;11777:191;:::o;49832:246::-;49894:12;49909:29;49932:5;49909:22;:29::i;:::-;-1:-1:-1;;;;;49951:23:0;;;;;;:16;:23;;;;;:31;;;49996:20;:28;;49894:44;;-1:-1:-1;49894:44:0;;49996:20;;49951:23;49996:28;;49894:44;;49996:28;:::i;:::-;;;;-1:-1:-1;;50049:10:0;50037:23;;;;:11;:23;;;;;:31;;50064:4;;50037:23;:31;;50064:4;;50037:31;:::i;49569:255::-;49634:16;49676:1;49653:20;;:24;;;;:::i;:::-;49634:43;;49714:8;49690:20;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;49749:10:0;49735:25;;;;:13;:25;;;;;:37;;49764:8;;49735:25;:37;;49764:8;;49735:37;:::i;:::-;;;;-1:-1:-1;49785:29:0;;-1:-1:-1;49797:6:0;49805:8;49785:11;:29::i;56742:261::-;56844:17;56829:12;;:32;56821:41;;;;;;56891:6;56875:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;56910:28:0;;-1:-1:-1;56922:7:0;56931:6;56910:11;:28::i;:::-;56956:37;;1333:25:1;;;-1:-1:-1;;;;;56956:37:0;;;56973:1;;56956:37;;1321:2:1;1306:18;56956:37:0;1187:177:1;36891:129:0;-1:-1:-1;;;;;36947:13:0;;;;;:4;:13;;;;;;;;:20;;36963:4;-1:-1:-1;;36947:20:0;;;;;;;;36980:23;;;;;:30;;;;;;;;;;36891:129::o;40016:2827::-;29416:7;;-1:-1:-1;;;29416:7:0;;;;29415:8;29407:17;;;;;;29437:7;:14;;-1:-1:-1;;;;29437:14:0;-1:-1:-1;;;29437:14:0;;;;;;;;;;;;;;;-1:-1:-1;;;40205:10:0;::::1;29437:14:::0;40205:10:::1;:18;;29447:4:::0;40205:18;40202:335:::1;;40282:3;40263:15;:10:::0;40276:2:::1;40263:15;:::i;:::-;40262:23;;;;:::i;:::-;40241:44:::0;-1:-1:-1;40320:22:0::1;40341:1;40241:44:::0;40320:22:::1;:::i;:::-;40302:40:::0;-1:-1:-1;40374:28:0::1;40302:40:::0;40374:10;:28:::1;:::i;:::-;40359:43;;40430:2;40419:13;;40202:335;;;40482:10;40467:25;;40520:3;40509:14;;40202:335;40573:16;::::0;;40587:1:::1;40573:16:::0;;;;;::::1;::::0;;40549:21:::1;::::0;40573:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;40573:16:0::1;40549:40;;40620:4;40602;40607:1;40602:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40602:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;40637:7:::1;::::0;:14:::1;::::0;;-1:-1:-1;;;40637:14:0;;;;:7;;;::::1;::::0;:12:::1;::::0;:14:::1;::::0;;::::1;::::0;40602:7;;40637:14;;;;;:7;:14:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;40627:4;40632:1;40627:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;40627:24:0;;::::1;:7;::::0;;::::1;::::0;;;;;:24;40696:7:::1;::::0;40664:55:::1;::::0;40681:4:::1;::::0;40696:7:::1;40706:12:::0;40664:8:::1;:55::i;:::-;40786:7;::::0;:141:::1;::::0;-1:-1:-1;;;40786:141:0;;40752:21:::1;::::0;-1:-1:-1;;;;;40786:7:0::1;::::0;:58:::1;::::0;:141:::1;::::0;40861:12;;40732:17:::1;::::0;40878:4;;40892::::1;::::0;40899:15:::1;::::0;40786:141:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;40941:18;40986:9;40962:21;:33;;;;:::i;:::-;41106:10;::::0;40941:54;;-1:-1:-1;;;;41106:10:0;::::1;;;41103:187;;;41179:12:::0;41147:28:::1;41165:10:::0;41147:15;:28:::1;:::i;:::-;41146:45;;;;:::i;:::-;41134:57;;41209:9;41193:12;;:25;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41235:41:0::1;::::0;-1:-1:-1;41249:15:0;41266:9;41235:13:::1;:41::i;:::-;41316:10;41302;;:24;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;41339:23:0::1;::::0;-1:-1:-1;41353:9:0;41339:23;::::1;:::i;:::-;::::0;-1:-1:-1;41505:20:0::1;41548:8:::0;41529:15:::1;41339:23:::0;41542:2:::1;41529:15;:::i;:::-;41528:28;;;;:::i;:::-;41505:51:::0;-1:-1:-1;41569:22:0::1;41614:8:::0;41595:15:::1;:10:::0;41608:2:::1;41595:15;:::i;:::-;41594:28;;;;:::i;:::-;41569:53:::0;-1:-1:-1;41636:18:0::1;41676:8:::0;41658:14:::1;:10:::0;41671:1:::1;41658:14;:::i;:::-;41657:27;;;;:::i;:::-;41636:48:::0;-1:-1:-1;41800:18:0::1;41636:48:::0;41849:14;41821:25:::1;41834:12:::0;41821:10;:25:::1;:::i;:::-;:42;;;;:::i;:::-;:55;;;;:::i;:::-;41892:11;::::0;41800:76;;-1:-1:-1;;;;41892:11:0;::::1;;;41889:351;;;41931:7;;;;;;;;;-1:-1:-1::0;;;;;41931:7:0::1;-1:-1:-1::0;;;;;41931:12:0::1;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;41921:4;41926:1;41921:7;;;;;;;;:::i;:::-;;;;;;:24;-1:-1:-1::0;;;;;41921:24:0::1;;;-1:-1:-1::0;;;;;41921:24:0::1;;;::::0;::::1;41965:4;41947;41952:1;41947:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;41947:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;;:23;41972:13:::1;41988:21;:15;42006:3;41988:21;:::i;:::-;42050:7;::::0;:89:::1;::::0;-1:-1:-1;;;42050:89:0;;41972:37;;-1:-1:-1;42026:21:0::1;::::0;-1:-1:-1;;;;;42050:7:0;;::::1;::::0;:29:::1;::::0;42086:10;;42050:89:::1;::::0;42026:21;;42101:4;;31085:42:::1;::::0;41972:37;;42050:89:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;42050:89:0::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;42026:113;;42177:4;-1:-1:-1::0;;;;;42161:65:0::1;;42184:10;42197:7;42222:1;42205:7;:14;:18;;;;:::i;:::-;42197:27;;;;;;;;:::i;:::-;;;;;;;42161:65;;;;;;5081:25:1::0;;;5137:2;5122:18;;5115:34;5069:2;5054:18;;4907:248;42161:65:0::1;;;;;;;;41904:336;;41889:351;42392:11;::::0;-1:-1:-1;;;42392:11:0;::::1;;;42389:105;;;42421:28;42439:10:::0;42421:28;::::1;:::i;:::-;;;42479:1;42466:14;;42389:105;42547:3;42526:19;:14:::0;42543:2:::1;42526:19;:::i;:::-;42525:25;;;;:::i;:::-;42506:15;;:44;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;42609:3:0::1;::::0;-1:-1:-1;42588:19:0::1;:14:::0;42605:2:::1;42588:19;:::i;:::-;42587:25;;;;:::i;:::-;42563:20;;:49;;;;;;;:::i;:::-;;;;;;;;42641:10;42625:12;;:26;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;42739:16:0::1;::::0;42727:45:::1;::::0;-1:-1:-1;;;;;42739:16:0::1;42757:14;42770:1;42757:12:::0;:14:::1;:::i;:::-;42727:11;:45::i;:::-;42797:18;::::0;42785:47:::1;::::0;-1:-1:-1;;;;;42797:18:0::1;42817:14;42830:1;42817:12:::0;:14:::1;:::i;42785:47::-;-1:-1:-1::0;;29478:7:0;:15;;-1:-1:-1;;;;29478:15:0;;;-1:-1:-1;;;;;;;;;;;40016:2827:0:o;52586:304::-;52655:12;;52721:3;52701:16;52710:7;52701:6;:16;:::i;:::-;52700:24;;;;:::i;:::-;52694:30;-1:-1:-1;52744:12:0;52694:30;52744:6;:12;:::i;:::-;52737:19;;52799:9;;52788:8;;52776:9;;:20;;;;:::i;:::-;:32;52769:40;;;;:::i;:::-;52839:10;52846:3;52839:4;:10;:::i;:::-;52829:6;:20;52822:28;;;;:::i;:::-;52586:304;;;;;:::o;52898:173::-;52992:9;52978:10;;:23;;;;;;;:::i;:::-;;;;-1:-1:-1;53014:47:0;;-1:-1:-1;53027:7:0;53044:4;53051:9;53014:12;:47::i;37486:139::-;-1:-1:-1;;;;;37588:18:0;;;;;;:9;:18;;;;;;:27;;37609:6;;37588:27;:::i;:::-;-1:-1:-1;;;;;37567:18:0;;;;;;;:9;:18;;;;;:48;;;;-1:-1:-1;37486:139:0:o;37344:134::-;-1:-1:-1;;;;;37441:18:0;;;;;;:9;:18;;;;;;:27;;37462:6;;37441:27;:::i;42875:369::-;42989:7;;42957:49;;42974:4;;-1:-1:-1;;;;;42989:7:0;42999:6;42957:8;:49::i;:::-;43046:7;;43132:12;;43046:127;;-1:-1:-1;;;43046:127:0;;43022:20;;-1:-1:-1;;;;;43046:7:0;;;;:23;;43077:12;;43046:127;;43115:4;;43121:6;;43022:20;;;;43132:12;;;43145:15;;43046:127;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;43019:154;;;;43205:12;43191:44;43219:15;43191:44;;;;1333:25:1;;1321:2;1306:18;;1187:177;43191:44:0;;;;;;;;42944:300;42875:369;;:::o;14:615:1:-;100:6;108;161:2;149:9;140:7;136:23;132:32;129:52;;;177:1;174;167:12;129:52;217:9;204:23;246:18;287:2;279:6;276:14;273:34;;;303:1;300;293:12;273:34;341:6;330:9;326:22;316:32;;386:7;379:4;375:2;371:13;367:27;357:55;;408:1;405;398:12;357:55;448:2;435:16;474:2;466:6;463:14;460:34;;;490:1;487;480:12;460:34;543:7;538:2;528:6;525:1;521:14;517:2;513:23;509:32;506:45;503:65;;;564:1;561;554:12;503:65;595:2;587:11;;;;;617:6;;-1:-1:-1;14:615:1;;-1:-1:-1;;;;14:615:1:o;634:548::-;746:4;775:2;804;793:9;786:21;836:6;830:13;879:6;874:2;863:9;859:18;852:34;904:1;914:140;928:6;925:1;922:13;914:140;;;1023:14;;;1019:23;;1013:30;989:17;;;1008:2;985:26;978:66;943:10;;914:140;;;918:3;1103:1;1098:2;1089:6;1078:9;1074:22;1070:31;1063:42;1173:2;1166;1162:7;1157:2;1149:6;1145:15;1141:29;1130:9;1126:45;1122:54;1114:62;;;;634:548;;;;:::o;1369:131::-;-1:-1:-1;;;;;1444:31:1;;1434:42;;1424:70;;1490:1;1487;1480:12;1505:315;1573:6;1581;1634:2;1622:9;1613:7;1609:23;1605:32;1602:52;;;1650:1;1647;1640:12;1602:52;1689:9;1676:23;1708:31;1733:5;1708:31;:::i;:::-;1758:5;1810:2;1795:18;;;;1782:32;;-1:-1:-1;;;1505:315:1:o;2017:247::-;2076:6;2129:2;2117:9;2108:7;2104:23;2100:32;2097:52;;;2145:1;2142;2135:12;2097:52;2184:9;2171:23;2203:31;2228:5;2203:31;:::i;2477:461::-;2530:3;2568:5;2562:12;2595:6;2590:3;2583:19;2621:4;2650:2;2645:3;2641:12;2634:19;;2687:2;2680:5;2676:14;2708:1;2718:195;2732:6;2729:1;2726:13;2718:195;;;2797:13;;-1:-1:-1;;;;;2793:39:1;2781:52;;2853:12;;;;2888:15;;;;2829:1;2747:9;2718:195;;;-1:-1:-1;2929:3:1;;2477:461;-1:-1:-1;;;;;2477:461:1:o;2943:261::-;3122:2;3111:9;3104:21;3085:4;3142:56;3194:2;3183:9;3179:18;3171:6;3142:56;:::i;3209:456::-;3286:6;3294;3302;3355:2;3343:9;3334:7;3330:23;3326:32;3323:52;;;3371:1;3368;3361:12;3323:52;3410:9;3397:23;3429:31;3454:5;3429:31;:::i;:::-;3479:5;-1:-1:-1;3536:2:1;3521:18;;3508:32;3549:33;3508:32;3549:33;:::i;:::-;3209:456;;3601:7;;-1:-1:-1;;;3655:2:1;3640:18;;;;3627:32;;3209:456::o;3670:160::-;3735:20;;3791:13;;3784:21;3774:32;;3764:60;;3820:1;3817;3810:12;3764:60;3670:160;;;:::o;3835:180::-;3891:6;3944:2;3932:9;3923:7;3919:23;3915:32;3912:52;;;3960:1;3957;3950:12;3912:52;3983:26;3999:9;3983:26;:::i;4020:180::-;4079:6;4132:2;4120:9;4111:7;4107:23;4103:32;4100:52;;;4148:1;4145;4138:12;4100:52;-1:-1:-1;4171:23:1;;4020:180;-1:-1:-1;4020:180:1:o;4654:248::-;4716:6;4724;4777:2;4765:9;4756:7;4752:23;4748:32;4745:52;;;4793:1;4790;4783:12;4745:52;4816:26;4832:9;4816:26;:::i;:::-;4806:36;;4861:35;4892:2;4881:9;4877:18;4861:35;:::i;:::-;4851:45;;4654:248;;;;;:::o;5384:::-;5452:6;5460;5513:2;5501:9;5492:7;5488:23;5484:32;5481:52;;;5529:1;5526;5519:12;5481:52;-1:-1:-1;;5552:23:1;;;5622:2;5607:18;;;5594:32;;-1:-1:-1;5384:248:1:o;5637:::-;5702:6;5710;5763:2;5751:9;5742:7;5738:23;5734:32;5731:52;;;5779:1;5776;5769:12;5731:52;5802:26;5818:9;5802:26;:::i;6214:388::-;6282:6;6290;6343:2;6331:9;6322:7;6318:23;6314:32;6311:52;;;6359:1;6356;6349:12;6311:52;6398:9;6385:23;6417:31;6442:5;6417:31;:::i;:::-;6467:5;-1:-1:-1;6524:2:1;6509:18;;6496:32;6537:33;6496:32;6537:33;:::i;:::-;6589:7;6579:17;;;6214:388;;;;;:::o;6607:127::-;6668:10;6663:3;6659:20;6656:1;6649:31;6699:4;6696:1;6689:15;6723:4;6720:1;6713:15;6739:127;6800:10;6795:3;6791:20;6788:1;6781:31;6831:4;6828:1;6821:15;6855:4;6852:1;6845:15;6871:135;6910:3;6931:17;;;6928:43;;6951:18;;:::i;:::-;-1:-1:-1;6998:1:1;6987:13;;6871:135::o;7011:380::-;7090:1;7086:12;;;;7133;;;7154:61;;7208:4;7200:6;7196:17;7186:27;;7154:61;7261:2;7253:6;7250:14;7230:18;7227:38;7224:161;;7307:10;7302:3;7298:20;7295:1;7288:31;7342:4;7339:1;7332:15;7370:4;7367:1;7360:15;7224:161;;7011:380;;;:::o;7396:128::-;7463:9;;;7484:11;;;7481:37;;;7498:18;;:::i;7529:125::-;7594:9;;;7615:10;;;7612:36;;;7628:18;;:::i;8346:127::-;8407:10;8402:3;8398:20;8395:1;8388:31;8438:4;8435:1;8428:15;8462:4;8459:1;8452:15;8478:251;8548:6;8601:2;8589:9;8580:7;8576:23;8572:32;8569:52;;;8617:1;8614;8607:12;8569:52;8649:9;8643:16;8668:31;8693:5;8668:31;:::i;8734:518::-;9013:6;9002:9;8995:25;9056:3;9051:2;9040:9;9036:18;9029:31;8976:4;9077:57;9129:3;9118:9;9114:19;9106:6;9077:57;:::i;:::-;-1:-1:-1;;;;;9170:32:1;;;;9165:2;9150:18;;9143:60;-1:-1:-1;9234:2:1;9219:18;9212:34;9069:65;8734:518;-1:-1:-1;;8734:518:1:o;9257:1105::-;9352:6;9383:2;9426;9414:9;9405:7;9401:23;9397:32;9394:52;;;9442:1;9439;9432:12;9394:52;9475:9;9469:16;9504:18;9545:2;9537:6;9534:14;9531:34;;;9561:1;9558;9551:12;9531:34;9599:6;9588:9;9584:22;9574:32;;9644:7;9637:4;9633:2;9629:13;9625:27;9615:55;;9666:1;9663;9656:12;9615:55;9695:2;9689:9;9717:2;9713;9710:10;9707:36;;;9723:18;;:::i;:::-;9769:2;9766:1;9762:10;9801:2;9795:9;9864:2;9860:7;9855:2;9851;9847:11;9843:25;9835:6;9831:38;9919:6;9907:10;9904:22;9899:2;9887:10;9884:18;9881:46;9878:72;;;9930:18;;:::i;:::-;9966:2;9959:22;10016:18;;;10050:15;;;;-1:-1:-1;10092:11:1;;;10088:20;;;10120:19;;;10117:39;;;10152:1;10149;10142:12;10117:39;10176:11;;;;10196:135;10212:6;10207:3;10204:15;10196:135;;;10278:10;;10266:23;;10229:12;;;;10309;;;;10196:135;;;10350:6;9257:1105;-1:-1:-1;;;;;;;;9257:1105:1:o;11074:127::-;11135:10;11130:3;11126:20;11123:1;11116:31;11166:4;11163:1;11156:15;11190:4;11187:1;11180:15;11206:168;11279:9;;;11310;;11327:15;;;11321:22;;11307:37;11297:71;;11348:18;;:::i;11379:127::-;11440:10;11435:3;11431:20;11428:1;11421:31;11471:4;11468:1;11461:15;11495:4;11492:1;11485:15;11511:120;11551:1;11577;11567:35;;11582:18;;:::i;:::-;-1:-1:-1;11616:9:1;;11511:120::o;13055:112::-;13087:1;13113;13103:35;;13118:18;;:::i;:::-;-1:-1:-1;13152:9:1;;13055:112::o;13172:188::-;13251:13;;-1:-1:-1;;;;;13293:42:1;;13283:53;;13273:81;;13350:1;13347;13340:12;13365:450;13452:6;13460;13468;13521:2;13509:9;13500:7;13496:23;13492:32;13489:52;;;13537:1;13534;13527:12;13489:52;13560:40;13590:9;13560:40;:::i;:::-;13550:50;;13619:49;13664:2;13653:9;13649:18;13619:49;:::i;:::-;13609:59;;13711:2;13700:9;13696:18;13690:25;13755:10;13748:5;13744:22;13737:5;13734:33;13724:61;;13781:1;13778;13771:12;13724:61;13804:5;13794:15;;;13365:450;;;;;:::o;13820:422::-;13909:1;13952:5;13909:1;13966:270;13987:7;13977:8;13974:21;13966:270;;;14046:4;14042:1;14038:6;14034:17;14028:4;14025:27;14022:53;;;14055:18;;:::i;:::-;14105:7;14095:8;14091:22;14088:55;;;14125:16;;;;14088:55;14204:22;;;;14164:15;;;;13966:270;;;13970:3;13820:422;;;;;:::o;14247:806::-;14296:5;14326:8;14316:80;;-1:-1:-1;14367:1:1;14381:5;;14316:80;14415:4;14405:76;;-1:-1:-1;14452:1:1;14466:5;;14405:76;14497:4;14515:1;14510:59;;;;14583:1;14578:130;;;;14490:218;;14510:59;14540:1;14531:10;;14554:5;;;14578:130;14615:3;14605:8;14602:17;14599:43;;;14622:18;;:::i;:::-;-1:-1:-1;;14678:1:1;14664:16;;14693:5;;14490:218;;14792:2;14782:8;14779:16;14773:3;14767:4;14764:13;14760:36;14754:2;14744:8;14741:16;14736:2;14730:4;14727:12;14723:35;14720:77;14717:159;;;-1:-1:-1;14829:19:1;;;14861:5;;14717:159;14908:34;14933:8;14927:4;14908:34;:::i;:::-;14978:6;14974:1;14970:6;14966:19;14957:7;14954:32;14951:58;;;14989:18;;:::i;:::-;15027:20;;14247:806;-1:-1:-1;;;14247:806:1:o;15058:131::-;15118:5;15147:36;15174:8;15168:4;15147:36;:::i;15600:332::-;15807:6;15796:9;15789:25;15850:2;15845;15834:9;15830:18;15823:30;15770:4;15870:56;15922:2;15911:9;15907:18;15899:6;15870:56;:::i;:::-;15862:64;15600:332;-1:-1:-1;;;;15600:332:1:o;15937:607::-;-1:-1:-1;;;;;16296:15:1;;;16278:34;;16343:2;16328:18;;16321:34;;;;16386:2;16371:18;;16364:34;;;;16429:2;16414:18;;16407:34;;;;16478:15;;;16472:3;16457:19;;16450:44;16258:3;16510:19;;16503:35;;;;16227:3;16212:19;;15937:607::o;16549:306::-;16637:6;16645;16653;16706:2;16694:9;16685:7;16681:23;16677:32;16674:52;;;16722:1;16719;16712:12;16674:52;16751:9;16745:16;16735:26;;16801:2;16790:9;16786:18;16780:25;16770:35;;16845:2;16834:9;16830:18;16824:25;16814:35;;16549:306;;;;;:::o;19700:582::-;19999:6;19988:9;19981:25;20042:6;20037:2;20026:9;20022:18;20015:34;20085:3;20080:2;20069:9;20065:18;20058:31;19962:4;20106:57;20158:3;20147:9;20143:19;20135:6;20106:57;:::i;:::-;-1:-1:-1;;;;;20199:32:1;;;;20194:2;20179:18;;20172:60;-1:-1:-1;20263:3:1;20248:19;20241:35;20098:65;19700:582;-1:-1:-1;;;19700:582:1:o;20287:127::-;20348:10;20343:3;20339:20;20336:1;20329:31;20379:4;20376:1;20369:15;20403:4;20400:1;20393:15
Swarm Source
ipfs://1f613536c44ab74ec93e3a416f1a5d336238590b4b5425ae6bcad62053308c1c
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.