ERC-20
Overview
Max Total Supply
8,843,516.438652 The Dragon Master
Holders
161
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 6 Decimals)
Balance
5,835.887065 The Dragon MasterValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
TheDragonMaster
Compiler Version
v0.8.9+commit.e5eed63a
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2022-12-06 */ // Website - https://kazuothemaster.com/ // Telegram - https://t.me/kazuoerc // Twitter - https://twitter.com/kazuoerc // SPDX-License-Identifier: MIT pragma solidity 0.8.9; abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } 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; } 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; } interface IERC20 { /** * @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 tot Etherscan.i * * Returns a boolean value indicating whether the operation succeeded. ** Emits a {Transfer} event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that spender will be * allowed to spend on behalf ofan.io on 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 sender to recipient using the * allowance mechanism.Etherscan.is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom( address sender, address recipient, uint256 amount ) external returns (bool); /** * @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}.Etherscanis the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } 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); } contract ERC20 is Context, IERC20, IERC20Metadata { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @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.io on 2(`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 6; } /** * @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: * * - recipient cannot be the zero address. * - the caller must have a balance of at least amount. */ function transfer(address recipient, uint256 amount) public virtual override returns (bool) { _transfer(_msgSender(), recipient, 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}. * * Requirements: * * - - see http (https://github.com/ethereum/solidity/issues/2691)cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { _approve(_msgSender(), 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}. * * Requirements: * * - sender and recipient cannot be the zero address. * - Etherscanmust have a balance of at leaston at Ethe * - the caller must have allowance for ``sender``'s tokens of at least * amount. */ function transferFrom( address sender, address recipient, uint256 amount ) public virtual override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); 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) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(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. * - Etherscan.must have allowance for the caller of at least * subtractedValue. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero")); return true; } /** * @dev Moves tokens amount from sender to recipient. * * This is 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: * * - sender cannot be the zero address. * - Etherscan.iocannot be the zero address.* - Etherscanmust have a balance of at leaston at Ethe */ function _transfer( address sender, address recipient, uint256 amount ) internal virtual { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(sender, recipient, amount); _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance"); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, 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 = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(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. * - Etherscan.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); _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance"); _totalSupply = _totalSupply.sub(amount); emit Transfer(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. * - Etherscan.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 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 to 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. * -n.io on 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 {} } library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's + operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's - operator.* * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return sub(a, b, "SafeMath: subtraction overflow"); } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * Counterpart to Solidity's - operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b <= a, errorMessage); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's * operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's / operator. Note: this function uses a *can.io on opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return div(a, b, "SafeMath: division by zero"); } /** * @dev Returns the integer division of two unsigned integers. Reverts with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's / operator. Note: this function uses a *can.io on opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b > 0, errorMessage); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's % operator. This function uses aion at Eth * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return mod(a, b, "SafeMath: modulo by zero"); } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts with custom message when dividing by zero. * * Counterpart to Solidity's % operator. This function uses aion at Eth * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) { require(b != 0, errorMessage); return a % b; } } 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 () { address msgSender = _msgSender(); _owner = msgSender; emit OwnershipTransferred(address(0), msgSender); } /** * @dev Returns the address of the current owner. */ function owner() public view returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { 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 { emit OwnershipTransferred(_owner, address(0)); _owner = 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"); emit OwnershipTransferred(_owner, newOwner); _owner = newOwner; } } 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); } 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; } contract TheDragonMaster is ERC20, Ownable { using SafeMath for uint256; mapping (address => uint256) private _rOwned; uint256 private constant MAX = ~uint256(0); uint256 private constant _tTotal = 9 * 1e6 * 1e6; uint256 private _tSupply; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tFeeTotal; uint256 public maxTransactionAmount; uint256 public maxWallet; uint256 public swapTokensAtAmount; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; address public constant deadAddress = address(0xdead); bool private swapping; address public Treasury; bool public limitsInEffect = true; bool public tradingActive = false; // Anti-bot and anti-whale mappings and variables mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch bool public transferDelayEnabled = false; uint256 public buyTotalFees; uint256 public buyTreasuryFee = 19; uint256 public buyBurnFee = 1; uint256 public buyReflectionFee = 0; uint256 public sellTotalFees; uint256 public sellTreasuryFee = 19; uint256 public sellBurnFee = 1; uint256 public sellReflectionFee = 0; uint256 public tokensForTreasury; uint256 public tokensForBurn; uint256 public tokensForReflections; uint256 public walletDigit; uint256 public transDigit; uint256 public delayDigit; /******************/ // exclude from fees, max transaction amount and max wallet amount mapping (address => bool) private _isExcludedFromFees; mapping (address => bool) public _isExcludedMaxTransactionAmount;mapping (address => bool) public _isExcludedMaxWalletAmount; // store addresses that a automatic market maker pairs. Any transfer *to* these addresses // could be subject to a maximum transfer amount mapping (address => bool) public automatedMarketMakerPairs; constructor() ERC20("KAZUO", "The Dragon Master") { IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); excludeFromMaxTransaction(address(_uniswapV2Router), true); excludeFromMaxWallet(address(_uniswapV2Router), true); uniswapV2Router = _uniswapV2Router; uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH()); excludeFromMaxTransaction(address(uniswapV2Pair), true); excludeFromMaxWallet(address(uniswapV2Pair), true); _setAutomatedMarketMakerPair(address(uniswapV2Pair), true); buyTotalFees = buyTreasuryFee + buyBurnFee + buyReflectionFee; sellTotalFees = sellTreasuryFee + sellBurnFee + sellReflectionFee; Treasury = 0xb6a10EF99a9919674121E3f8F8b525A12A715e38; _rOwned[_msgSender()] = _rTotal; _tSupply = _tTotal; walletDigit = 2; transDigit = 2; delayDigit = 1; maxTransactionAmount =_tSupply * transDigit / 100; swapTokensAtAmount = _tSupply * 5 / 10000; // 0.05% swap wallet; maxWallet = _tSupply * walletDigit / 100; // exclude from paying fees or having max transaction amount, max wallet amount excludeFromFees(owner(), true); excludeFromFees(address(this), true); excludeFromFees(address(0xdead), true); excludeFromMaxTransaction(owner(), true); excludeFromMaxTransaction(address(this), true); excludeFromMaxTransaction(address(0xdead), true); excludeFromMaxWallet(owner(), true); excludeFromMaxWallet(address(this), true); excludeFromMaxWallet(address(0xdead), true); _approve(owner(), address(uniswapV2Router), _tSupply); _mint(msg.sender, _tSupply); } receive() external payable {} // once enabled, can never be turned off function enableTrading() external onlyOwner { tradingActive = true; } // remove limits after token is stable function removeLimits() external onlyOwner returns (bool) { limitsInEffect = false; return true; } // change the minimum amount of tokens to swap function updateSwapTokensAtAmount(uint256 newAmount) external onlyOwner returns (bool) { require(newAmount >= (totalSupply() * 1 / 100000) / 1e6, "Swap amount cannot be lower than 0.001% total supply."); require(newAmount <= (totalSupply() * 5 / 1000) / 1e6, "Swap amount cannot be higher than 0.5% total supply."); swapTokensAtAmount = newAmount * (10**6); return true; } function updateTransDigit(uint256 newNum) external onlyOwner { require(newNum >= 1); transDigit = newNum; updateLimits(); } function updateWalletDigit(uint256 newNum) external onlyOwner { require(newNum >= 1); walletDigit = newNum; updateLimits(); } function updateDelayDigit(uint256 newNum) external onlyOwner{ delayDigit = newNum; } function excludeFromMaxTransaction(address updAds, bool isEx) public onlyOwner { _isExcludedMaxTransactionAmount[updAds] = isEx; } function excludeFromMaxWallet(address updAds, bool isEx) public onlyOwner { _isExcludedMaxWalletAmount[updAds] = isEx; } function updateBuyFees(uint256 _treasuryFee, uint256 _burnFee, uint256 _reflectionFee) external onlyOwner { buyTreasuryFee = _treasuryFee; buyBurnFee = _burnFee; buyReflectionFee = _reflectionFee; buyTotalFees = buyTreasuryFee + buyBurnFee + buyReflectionFee;require(buyTotalFees <= 21, "Must keep fees at 21% or less"); } function updateSellFees(uint256 _treasuryFee, uint256 _burnFee, uint256 _reflectionFee) external onlyOwner { sellTreasuryFee = _treasuryFee; sellBurnFee = _burnFee; sellReflectionFee = _reflectionFee; sellTotalFees = sellTreasuryFee + sellBurnFee + sellReflectionFee; require(sellTotalFees <= 21, "Must keep fees at 21% or less"); } function excludeFromFees(address account, bool excluded) public onlyOwner { _isExcludedFromFees[account] = excluded; } function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner { require(pair != uniswapV2Pair, "The pair cannot be removed from automatedMarketMakerPairs"); _setAutomatedMarketMakerPair(pair, value); } function _setAutomatedMarketMakerPair(address pair, bool value) private { automatedMarketMakerPairs[pair] = value; } function updateTreasuryWallet(address newTreasuryWallet) external onlyOwner { Treasury = newTreasuryWallet; } function updateLimits() private { maxTransactionAmount = _tSupply * transDigit / 100; swapTokensAtAmount = _tSupply * 1 / 10000; // 0.01% swap wallet; maxWallet = _tSupply * walletDigit / 100; } function isExcludedFromFees(address account) external view returns(bool) { return _isExcludedFromFees[account]; } function _transfer( address from, address to, uint256 amount ) internal override { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); require(amount > 0, "Transfer amount must be greater than zero"); if (limitsInEffect) { if ( from != owner() && to != owner() && to != address(0) && to != address(0xdead) && !swapping ) { if (!tradingActive) { require(_isExcludedFromFees[from] || _isExcludedFromFees[to], "Trading is not active."); } if (transferDelayEnabled){ if (to != owner() && to != address(uniswapV2Router) && to != address(uniswapV2Pair)){ require(_holderLastTransferTimestamp[tx.origin] < block.number, "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."); _holderLastTransferTimestamp[tx.origin] = block.number + delayDigit; } } // when buy if (automatedMarketMakerPairs[from] && !_isExcludedMaxTransactionAmount[to]) { require(amount <= maxTransactionAmount, "Buy transfer amount exceeds the maxTransactionAmount."); } if (!_isExcludedMaxTransactionAmount[from]) { require(amount <= maxTransactionAmount, "transfer amount exceeds the maxTransactionAmount."); } if (!_isExcludedMaxWalletAmount[to]) { require(amount + balanceOf(to) <= maxWallet, "Max wallet exceeded"); } } } uint256 contractTokenBalance = balanceOf(address(this)); bool canSwap = contractTokenBalance >= swapTokensAtAmount; if ( canSwap && !swapping && !automatedMarketMakerPairs[from] && !_isExcludedFromFees[from] && !_isExcludedFromFees[to] ) { swapping = true; swapBack(); swapping = false; } bool takeFee = !swapping; // if any account belongs to _isExcludedFromFee account then remove the fee if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) { takeFee = false; } uint256 fees = 0; uint256 reflectionFee = 0;if (takeFee){ // on buy if (automatedMarketMakerPairs[from] && to != address(uniswapV2Router)) { fees = amount.mul(buyTotalFees).div(100); getTokensForFees(amount, buyTreasuryFee, buyBurnFee, buyReflectionFee); } // on sell else if (automatedMarketMakerPairs[to] && from != address(uniswapV2Router)) { fees = amount.mul(sellTotalFees).div(100); getTokensForFees(amount, sellTreasuryFee, sellBurnFee, sellReflectionFee); } if (fees > 0) { _tokenTransfer(from, address(this), fees, 0); uint256 refiAmount = tokensForBurn + tokensForReflections; bool refiAndBurn = refiAmount > 0; if(refiAndBurn){ burnAndReflect(refiAmount); } } amount -= fees; } _tokenTransfer(from, to, amount, reflectionFee); } function getTokensForFees(uint256 _amount, uint256 _treasuryFee, uint256 _burnFee, uint256 _reflectionFee) private { tokensForTreasury += _amount.mul(_treasuryFee).div(100); tokensForBurn += _amount.mul(_burnFee).div(100); tokensForReflections += _amount.mul(_reflectionFee).div(100); } function swapTokensForEth(uint256 tokenAmount) private { // generate the uniswap pair path of token -> weth address[] memory path = new address[](2); path[0] = address(this); path[1] = uniswapV2Router.WETH(); _approve(address(this), address(uniswapV2Router), tokenAmount); // make the swap uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens( tokenAmount, 0, // accept any amount of ETH path, address(this), block.timestamp ); } function swapBack() private { uint256 contractBalance = balanceOf(address(this)); bool success; if(contractBalance == 0) {return;} swapTokensForEth(contractBalance); tokensForTreasury = 0; (success,) = address(Treasury).call{value: address(this).balance}(""); } // Reflection function totalSupply() public view override returns (uint256) { return _tSupply; } function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); } function tokenFromReflection(uint256 rAmount) private view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function _tokenTransfer(address sender, address recipient, uint256 amount, uint256 reflectionFee) private { _transferStandard(sender, recipient, amount, reflectionFee); } function _transferStandard(address sender, address recipient, uint256 tAmount, uint256 reflectionFee) private { (uint256 rAmount, uint256 rTransferAmount, uint256 rFee, uint256 tTransferAmount, uint256 tFee) = _getValues(tAmount, reflectionFee); _rOwned[sender] = _rOwned[sender].sub(rAmount); _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount); _reflectFee(rFee, tFee); emit Transfer(sender, recipient, tTransferAmount); } function _reflectFee(uint256 rFee, uint256 tFee) private { _rTotal = _rTotal.sub(rFee); _tFeeTotal = _tFeeTotal.add(tFee); } function _getValues(uint256 tAmount, uint256 reflectionFee) private view returns (uint256, uint256, uint256, uint256, uint256) { (uint256 tTransferAmount, uint256 tFee) = _getTValues(tAmount, reflectionFee); uint256 currentRate = _getRate(); (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(tAmount, tFee, currentRate); return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee); }function _getTValues(uint256 tAmount, uint256 reflectionFee) private pure returns (uint256, uint256) { uint256 tFee = tAmount.mul(reflectionFee).div(100); uint256 tTransferAmount = tAmount.sub(tFee); return (tTransferAmount, tFee); } function _getRValues(uint256 tAmount, uint256 tFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) { uint256 rAmount = tAmount.mul(currentRate); uint256 rFee = tFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rFee); return (rAmount, rTransferAmount, rFee); } function _getRate() private view returns(uint256) { (uint256 rSupply, uint256 tSupply) = _getCurrentSupply(); return rSupply.div(tSupply); } function _getCurrentSupply() private view returns(uint256, uint256) { uint256 rSupply = _rTotal; uint256 tSupply = _tTotal; if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function burnAndReflect(uint256 _amount) private { _tokenTransfer(address(this), deadAddress, _amount, 50); _tSupply -= _amount.div(2); tokensForReflections = 0; tokensForBurn = 0; updateLimits(); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Treasury","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxTransactionAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedMaxWalletAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"address","name":"","type":"address"}],"name":"automatedMarketMakerPairs","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":[],"name":"buyBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"delayDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"updAds","type":"address"},{"internalType":"bool","name":"isEx","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","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":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"limitsInEffect","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellBurnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTotalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTreasuryFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"pair","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setAutomatedMarketMakerPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokensForTreasury","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":"tradingActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"}],"name":"updateBuyFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateDelayDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_treasuryFee","type":"uint256"},{"internalType":"uint256","name":"_burnFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"}],"name":"updateSellFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newAmount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateTransDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTreasuryWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newNum","type":"uint256"}],"name":"updateWalletDigit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletDigit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405265082f79cd90006000196200001a919062000f79565b60001962000029919062000fe0565b6008556001600d60156101000a81548160ff0219169083151502179055506000600d60166101000a81548160ff0219169083151502179055506000600f60006101000a81548160ff021916908315150217905550601360115560016012556000601355601360155560016016556000601755348015620000a857600080fd5b506040518060400160405280600581526020017f4b415a554f0000000000000000000000000000000000000000000000000000008152506040518060400160405280601181526020017f54686520447261676f6e204d617374657200000000000000000000000000000081525081600390805190602001906200012d92919062000e90565b5080600490805190602001906200014692919062000e90565b50505060006200015b6200072260201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d9050620002268160016200072a60201b60201c565b620002398160016200082760201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002b457600080fd5b505afa158015620002c9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ef919062001085565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200035257600080fd5b505afa15801562000367573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038d919062001085565b6040518363ffffffff1660e01b8152600401620003ac929190620010c8565b602060405180830381600087803b158015620003c757600080fd5b505af1158015620003dc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000402919062001085565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506200044a60a05160016200072a60201b60201c565b6200045f60a05160016200082760201b60201c565b6200047460a05160016200092460201b60201c565b601354601254601154620004899190620010f5565b620004959190620010f5565b601081905550601754601654601554620004b09190620010f5565b620004bc9190620010f5565b60148190555073b6a10ef99a9919674121e3f8f8b525a12a715e38600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600854600660006200052e6200072260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555065082f79cd90006007819055506002601b819055506002601c819055506001601d819055506064601c54600754620005a5919062001152565b620005b19190620011b3565b600a819055506127106005600754620005cb919062001152565b620005d79190620011b3565b600c819055506064601b54600754620005f1919062001152565b620005fd9190620011b3565b600b8190555062000625620006176200097f60201b60201c565b6001620009a960201b60201c565b62000638306001620009a960201b60201c565b6200064d61dead6001620009a960201b60201c565b6200066f620006616200097f60201b60201c565b60016200072a60201b60201c565b620006823060016200072a60201b60201c565b6200069761dead60016200072a60201b60201c565b620006b9620006ab6200097f60201b60201c565b60016200082760201b60201c565b620006cc3060016200082760201b60201c565b620006e161dead60016200082760201b60201c565b62000707620006f56200097f60201b60201c565b60805160075462000aa660201b60201c565b6200071b3360075462000c7960201b60201c565b5062001515565b600033905090565b6200073a6200072260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620007cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007c3906200124c565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b620008376200072260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620008c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008c0906200124c565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b620009b96200072260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000a4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a42906200124c565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141562000b19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b1090620012e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000b8c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000b83906200137c565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000c6c9190620013af565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000cec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ce3906200141c565b60405180910390fd5b62000d006000838362000e2860201b60201c565b62000d1c8160025462000e2d60201b6200231d1790919060201c565b60028190555062000d7a816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205462000e2d60201b6200231d1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000e1c9190620013af565b60405180910390a35050565b505050565b600080828462000e3e9190620010f5565b90508381101562000e86576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000e7d906200148e565b60405180910390fd5b8091505092915050565b82805462000e9e90620014df565b90600052602060002090601f01602090048101928262000ec2576000855562000f0e565b82601f1062000edd57805160ff191683800117855562000f0e565b8280016001018555821562000f0e579182015b8281111562000f0d57825182559160200191906001019062000ef0565b5b50905062000f1d919062000f21565b5090565b5b8082111562000f3c57600081600090555060010162000f22565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000f868262000f40565b915062000f938362000f40565b92508262000fa65762000fa562000f4a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000fed8262000f40565b915062000ffa8362000f40565b92508282101562001010576200100f62000fb1565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200104d8262001020565b9050919050565b6200105f8162001040565b81146200106b57600080fd5b50565b6000815190506200107f8162001054565b92915050565b6000602082840312156200109e576200109d6200101b565b5b6000620010ae848285016200106e565b91505092915050565b620010c28162001040565b82525050565b6000604082019050620010df6000830185620010b7565b620010ee6020830184620010b7565b9392505050565b6000620011028262000f40565b91506200110f8362000f40565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001147576200114662000fb1565b5b828201905092915050565b60006200115f8262000f40565b91506200116c8362000f40565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620011a857620011a762000fb1565b5b828202905092915050565b6000620011c08262000f40565b9150620011cd8362000f40565b925082620011e057620011df62000f4a565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062001234602083620011eb565b91506200124182620011fc565b602082019050919050565b60006020820190508181036000830152620012678162001225565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620012cc602483620011eb565b9150620012d9826200126e565b604082019050919050565b60006020820190508181036000830152620012ff81620012bd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600062001364602283620011eb565b9150620013718262001306565b604082019050919050565b60006020820190508181036000830152620013978162001355565b9050919050565b620013a98162000f40565b82525050565b6000602082019050620013c660008301846200139e565b92915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001404601f83620011eb565b91506200141182620013cc565b602082019050919050565b600060208201905081810360008301526200143781620013f5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600062001476601b83620011eb565b915062001483826200143e565b602082019050919050565b60006020820190508181036000830152620014a98162001467565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620014f857607f821691505b602082108114156200150f576200150e620014b0565b5b50919050565b60805160a051614f1362001573600039600081816111520152818161199a0152612997015260008181610ec60152818161293f01528181612f8601528181613071015281816136120152818161370201526137290152614f136000f3fe6080604052600436106103545760003560e01c80638095d564116101c6578063c0246668116100f7578063d85ba06311610095578063e71dc3f51161006f578063e71dc3f514610c8d578063f203acb614610cb8578063f2fde38b14610ce3578063f8b45b0514610d0c5761035b565b8063d85ba06314610bfa578063dd62ed3e14610c25578063e2f4560514610c625761035b565b8063c8c8ebe4116100d1578063c8c8ebe414610b3e578063cc2ffe7c14610b69578063d257b34f14610b94578063d2fcc00114610bd15761035b565b8063c024666814610ac1578063c17b5b8c14610aea578063c876d0b914610b135761035b565b80639a7a23d611610164578063a9059cbb1161013e578063a9059cbb146109f1578063adb873bd14610a2e578063b62496f514610a59578063bbc0c74214610a965761035b565b80639a7a23d6146109625780639fdc48241461098b578063a457c2d7146109b45761035b565b80638da5cb5b116101a05780638da5cb5b146108a457806395d89b41146108cf57806396880b17146108fa578063975d71e2146109375761035b565b80638095d5641461083b578063809d458d146108645780638a8c523c1461088d5761035b565b806339509351116102a05780636a486a8e1161023e578063715018a611610218578063715018a6146107a5578063751039fc146107bc5780637571336a146107e75780637ab43983146108105761035b565b80636a486a8e146107125780636b2fb1241461073d57806370a08231146107685761035b565b80634fbee1931161027a5780634fbee19314610654578063563df32f146106915780635c068a8c146106bc5780636042f719146106e75761035b565b806339509351146105c157806349bd5a5e146105fe5780634a62bb65146106295761035b565b806318160ddd1161030d57806323136371116102e7578063231363711461050357806323b872dd1461052e57806327c8f8351461056b578063313ce567146105965761035b565b806318160ddd146104845780631d777856146104af5780631fa07da5146104da5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c857806312611ae814610405578063150de0bb146104305780631694505e146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d37565b6040516103829190613c63565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613d1e565b610dc9565b6040516103bf9190613d79565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613d94565b610de7565b6040516103fc9190613d79565b60405180910390f35b34801561041157600080fd5b5061041a610e07565b6040516104279190613dd0565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613deb565b610e0d565b005b34801561046557600080fd5b5061046e610ec4565b60405161047b9190613e77565b60405180910390f35b34801561049057600080fd5b50610499610ee8565b6040516104a69190613dd0565b60405180910390f35b3480156104bb57600080fd5b506104c4610ef2565b6040516104d19190613dd0565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190613deb565b610ef8565b005b34801561050f57600080fd5b50610518610faf565b6040516105259190613dd0565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613e92565b610fb5565b6040516105629190613d79565b60405180910390f35b34801561057757600080fd5b5061058061108e565b60405161058d9190613ef4565b60405180910390f35b3480156105a257600080fd5b506105ab611094565b6040516105b89190613f2b565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e39190613d1e565b61109d565b6040516105f59190613d79565b60405180910390f35b34801561060a57600080fd5b50610613611150565b6040516106209190613ef4565b60405180910390f35b34801561063557600080fd5b5061063e611174565b60405161064b9190613d79565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190613d94565b611187565b6040516106889190613d79565b60405180910390f35b34801561069d57600080fd5b506106a66111dd565b6040516106b39190613ef4565b60405180910390f35b3480156106c857600080fd5b506106d1611203565b6040516106de9190613dd0565b60405180910390f35b3480156106f357600080fd5b506106fc611209565b6040516107099190613dd0565b60405180910390f35b34801561071e57600080fd5b5061072761120f565b6040516107349190613dd0565b60405180910390f35b34801561074957600080fd5b50610752611215565b60405161075f9190613dd0565b60405180910390f35b34801561077457600080fd5b5061078f600480360381019061078a9190613d94565b61121b565b60405161079c9190613dd0565b60405180910390f35b3480156107b157600080fd5b506107ba61126c565b005b3480156107c857600080fd5b506107d16113c4565b6040516107de9190613d79565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613f72565b61147f565b005b34801561081c57600080fd5b50610825611571565b6040516108329190613dd0565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d9190613fb2565b611577565b005b34801561087057600080fd5b5061088b60048036038101906108869190613d94565b611691565b005b34801561089957600080fd5b506108a261176c565b005b3480156108b057600080fd5b506108b9611820565b6040516108c69190613ef4565b60405180910390f35b3480156108db57600080fd5b506108e461184a565b6040516108f19190613c63565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190613d94565b6118dc565b60405161092e9190613d79565b60405180910390f35b34801561094357600080fd5b5061094c6118fb565b6040516109599190613dd0565b60405180910390f35b34801561096e57600080fd5b5061098960048036038101906109849190613f72565b611901565b005b34801561099757600080fd5b506109b260048036038101906109ad9190613deb565b611a35565b005b3480156109c057600080fd5b506109db60048036038101906109d69190613d1e565b611ad6565b6040516109e89190613d79565b60405180910390f35b3480156109fd57600080fd5b50610a186004803603810190610a139190613d1e565b611ba3565b604051610a259190613d79565b60405180910390f35b348015610a3a57600080fd5b50610a43611bc1565b604051610a509190613dd0565b60405180910390f35b348015610a6557600080fd5b50610a806004803603810190610a7b9190613d94565b611bc7565b604051610a8d9190613d79565b60405180910390f35b348015610aa257600080fd5b50610aab611be7565b604051610ab89190613d79565b60405180910390f35b348015610acd57600080fd5b50610ae86004803603810190610ae39190613f72565b611bfa565b005b348015610af657600080fd5b50610b116004803603810190610b0c9190613fb2565b611cec565b005b348015610b1f57600080fd5b50610b28611e06565b604051610b359190613d79565b60405180910390f35b348015610b4a57600080fd5b50610b53611e19565b604051610b609190613dd0565b60405180910390f35b348015610b7557600080fd5b50610b7e611e1f565b604051610b8b9190613dd0565b60405180910390f35b348015610ba057600080fd5b50610bbb6004803603810190610bb69190613deb565b611e25565b604051610bc89190613d79565b60405180910390f35b348015610bdd57600080fd5b50610bf86004803603810190610bf39190613f72565b611fbf565b005b348015610c0657600080fd5b50610c0f6120b1565b604051610c1c9190613dd0565b60405180910390f35b348015610c3157600080fd5b50610c4c6004803603810190610c479190614005565b6120b7565b604051610c599190613dd0565b60405180910390f35b348015610c6e57600080fd5b50610c7761213e565b604051610c849190613dd0565b60405180910390f35b348015610c9957600080fd5b50610ca2612144565b604051610caf9190613dd0565b60405180910390f35b348015610cc457600080fd5b50610ccd61214a565b604051610cda9190613dd0565b60405180910390f35b348015610cef57600080fd5b50610d0a6004803603810190610d059190613d94565b612150565b005b348015610d1857600080fd5b50610d21612317565b604051610d2e9190613dd0565b60405180910390f35b606060038054610d4690614074565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7290614074565b8015610dbf5780601f10610d9457610100808354040283529160200191610dbf565b820191906000526020600020905b815481529060010190602001808311610da257829003601f168201915b5050505050905090565b6000610ddd610dd661237b565b8484612383565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b601a5481565b610e1561237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b906140f2565b60405180910390fd5b6001811015610eb257600080fd5b80601b81905550610ec161254e565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600754905090565b60195481565b610f0061237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f86906140f2565b60405180910390fd5b6001811015610f9d57600080fd5b80601c81905550610fac61254e565b50565b60135481565b6000610fc28484846125b6565b61108384610fce61237b565b61107e85604051806060016040528060288152602001614e9160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061103461237b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316c9092919063ffffffff16565b612383565b600190509392505050565b61dead81565b60006006905090565b60006111466110aa61237b565b8461114185600160006110bb61237b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231d90919063ffffffff16565b612383565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600d60159054906101000a900460ff1681565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b60175481565b60145481565b60155481565b6000611265600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131d0565b9050919050565b61127461237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906140f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006113ce61237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611454906140f2565b60405180910390fd5b6000600d60156101000a81548160ff0219169083151502179055506001905090565b61148761237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906140f2565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b61157f61237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611605906140f2565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546116369190614141565b6116409190614141565b6010819055506015601054111561168c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611683906141e3565b60405180910390fd5b505050565b61169961237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f906140f2565b60405180910390fd5b80600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61177461237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa906140f2565b60405180910390fd5b6001600d60166101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461185990614074565b80601f016020809104026020016040519081016040528092919081815260200182805461188590614074565b80156118d25780601f106118a7576101008083540402835291602001916118d2565b820191906000526020600020905b8154815290600101906020018083116118b557829003601f168201915b5050505050905090565b602080528060005260406000206000915054906101000a900460ff1681565b601c5481565b61190961237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f906140f2565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e90614275565b60405180910390fd5b611a31828261323e565b5050565b611a3d61237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac3906140f2565b60405180910390fd5b80601d8190555050565b6000611b99611ae361237b565b84611b9485604051806060016040528060258152602001614eb96025913960016000611b0d61237b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316c9092919063ffffffff16565b612383565b6001905092915050565b6000611bb7611bb061237b565b84846125b6565b6001905092915050565b60165481565b60216020528060005260406000206000915054906101000a900460ff1681565b600d60169054906101000a900460ff1681565b611c0261237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c88906140f2565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611cf461237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a906140f2565b60405180910390fd5b826015819055508160168190555080601781905550601754601654601554611dab9190614141565b611db59190614141565b60148190555060156014541115611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df8906141e3565b60405180910390fd5b505050565b600f60009054906101000a900460ff1681565b600a5481565b60185481565b6000611e2f61237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb5906140f2565b60405180910390fd5b620f4240620186a06001611ed0610ee8565b611eda9190614295565b611ee4919061431e565b611eee919061431e565b821015611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f27906143c1565b60405180910390fd5b620f42406103e86005611f41610ee8565b611f4b9190614295565b611f55919061431e565b611f5f919061431e565b821115611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890614453565b60405180910390fd5b620f424082611fb09190614295565b600c8190555060019050919050565b611fc761237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204d906140f2565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60125481565b601d5481565b61215861237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de906140f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224e906144e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600080828461232c9190614141565b905083811015612371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236890614551565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea906145e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245a90614675565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125419190613dd0565b60405180910390a3505050565b6064601c546007546125609190614295565b61256a919061431e565b600a8190555061271060016007546125829190614295565b61258c919061431e565b600c819055506064601b546007546125a49190614295565b6125ae919061431e565b600b81905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90614707565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d90614799565b60405180910390fd5b600081116126d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d09061482b565b60405180910390fd5b600d60159054906101000a900460ff1615612cf0576126f6611820565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127645750612734611820565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561279d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127d7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127f05750600d60009054906101000a900460ff16155b15612cef57600d60169054906101000a900460ff166128ea57601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128aa5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090614897565b60405180910390fd5b5b600f60009054906101000a900460ff1615612abf57612907611820565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561298e57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e657507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612abe5743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a639061494f565b60405180910390fd5b601d5443612a7a9190614141565b600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b625750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bad57600a54811115612bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba3906149e1565b60405180910390fd5b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c4457600a54811115612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a90614a73565b60405180910390fd5b5b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612cee57600b54612ca18361121b565b82612cac9190614141565b1115612ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce490614adf565b60405180910390fd5b5b5b5b6000612cfb3061121b565b90506000600c548210159050808015612d215750600d60009054906101000a900460ff16155b8015612d775750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dcd5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e235750601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e67576001600d60006101000a81548160ff021916908315150217905550612e4b613299565b6000600d60006101000a81548160ff0219169083151502179055505b6000600d60009054906101000a900460ff16159050601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f1d5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f2757600090505b600080821561315657602160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fd557507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561301b576130026064612ff46010548961335b90919063ffffffff16565b6133d690919063ffffffff16565b915061301686601154601254601354613420565b613103565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130c057507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15613102576130ed60646130df6014548961335b90919063ffffffff16565b6133d690919063ffffffff16565b915061310186601554601654601754613420565b5b5b60008211156131475761311988308460006134e0565b6000601a5460195461312b9190614141565b905060008082119050801561314457613143826134f2565b5b50505b81866131539190614aff565b95505b613162888888846134e0565b5050505050505050565b60008383111582906131b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ab9190613c63565b60405180910390fd5b50600083856131c39190614aff565b9050809150509392505050565b6000600854821115613217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320e90614ba5565b60405180910390fd5b6000613221613548565b905061323681846133d690919063ffffffff16565b915050919050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006132a43061121b565b90506000808214156132b7575050613359565b6132c082613573565b6000601881905550600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161330e90614bf6565b60006040518083038185875af1925050503d806000811461334b576040519150601f19603f3d011682016040523d82523d6000602084013e613350565b606091505b50508091505050505b565b60008083141561336e57600090506133d0565b6000828461337c9190614295565b905082848261338b919061431e565b146133cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c290614c7d565b60405180910390fd5b809150505b92915050565b600061341883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506137bf565b905092915050565b6134466064613438858761335b90919063ffffffff16565b6133d690919063ffffffff16565b601860008282546134579190614141565b925050819055506134846064613476848761335b90919063ffffffff16565b6133d690919063ffffffff16565b601960008282546134959190614141565b925050819055506134c260646134b4838761335b90919063ffffffff16565b6133d690919063ffffffff16565b601a60008282546134d39190614141565b9250508190555050505050565b6134ec84848484613822565b50505050565b6135013061dead8360326134e0565b6135156002826133d690919063ffffffff16565b600760008282546135269190614aff565b925050819055506000601a81905550600060198190555061354561254e565b50565b60008060006135556139e2565b9150915061356c81836133d690919063ffffffff16565b9250505090565b6000600267ffffffffffffffff8111156135905761358f614c9d565b5b6040519080825280602002602001820160405280156135be5781602001602082028036833780820191505090505b50905030816000815181106135d6576135d5614ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561367657600080fd5b505afa15801561368a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ae9190614d10565b816001815181106136c2576136c1614ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613727307f000000000000000000000000000000000000000000000000000000000000000084612383565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613789959493929190614e36565b600060405180830381600087803b1580156137a357600080fd5b505af11580156137b7573d6000803e3d6000fd5b505050505050565b60008083118290613806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fd9190613c63565b60405180910390fd5b5060008385613815919061431e565b9050809150509392505050565b60008060008060006138348787613a3b565b9450945094509450945061389085600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9590919063ffffffff16565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392584600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231d90919063ffffffff16565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139728382613adf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139cf9190613dd0565b60405180910390a3505050505050505050565b60008060006008549050600065082f79cd90009050613a1265082f79cd90006008546133d690919063ffffffff16565b821015613a2e5760085465082f79cd9000935093505050613a37565b81819350935050505b9091565b6000806000806000806000613a508989613b19565b915091506000613a5e613548565b90506000806000613a708d8686613b6c565b92509250925082828288889a509a509a509a509a505050505050509295509295909350565b6000613ad783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061316c565b905092915050565b613af482600854613a9590919063ffffffff16565b600881905550613b0f8160095461231d90919063ffffffff16565b6009819055505050565b6000806000613b446064613b36868861335b90919063ffffffff16565b6133d690919063ffffffff16565b90506000613b5b8287613a9590919063ffffffff16565b905080829350935050509250929050565b600080600080613b85858861335b90919063ffffffff16565b90506000613b9c868861335b90919063ffffffff16565b90506000613bb38284613a9590919063ffffffff16565b905082818395509550955050505093509350939050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c04578082015181840152602081019050613be9565b83811115613c13576000848401525b50505050565b6000601f19601f8301169050919050565b6000613c3582613bca565b613c3f8185613bd5565b9350613c4f818560208601613be6565b613c5881613c19565b840191505092915050565b60006020820190508181036000830152613c7d8184613c2a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cb582613c8a565b9050919050565b613cc581613caa565b8114613cd057600080fd5b50565b600081359050613ce281613cbc565b92915050565b6000819050919050565b613cfb81613ce8565b8114613d0657600080fd5b50565b600081359050613d1881613cf2565b92915050565b60008060408385031215613d3557613d34613c85565b5b6000613d4385828601613cd3565b9250506020613d5485828601613d09565b9150509250929050565b60008115159050919050565b613d7381613d5e565b82525050565b6000602082019050613d8e6000830184613d6a565b92915050565b600060208284031215613daa57613da9613c85565b5b6000613db884828501613cd3565b91505092915050565b613dca81613ce8565b82525050565b6000602082019050613de56000830184613dc1565b92915050565b600060208284031215613e0157613e00613c85565b5b6000613e0f84828501613d09565b91505092915050565b6000819050919050565b6000613e3d613e38613e3384613c8a565b613e18565b613c8a565b9050919050565b6000613e4f82613e22565b9050919050565b6000613e6182613e44565b9050919050565b613e7181613e56565b82525050565b6000602082019050613e8c6000830184613e68565b92915050565b600080600060608486031215613eab57613eaa613c85565b5b6000613eb986828701613cd3565b9350506020613eca86828701613cd3565b9250506040613edb86828701613d09565b9150509250925092565b613eee81613caa565b82525050565b6000602082019050613f096000830184613ee5565b92915050565b600060ff82169050919050565b613f2581613f0f565b82525050565b6000602082019050613f406000830184613f1c565b92915050565b613f4f81613d5e565b8114613f5a57600080fd5b50565b600081359050613f6c81613f46565b92915050565b60008060408385031215613f8957613f88613c85565b5b6000613f9785828601613cd3565b9250506020613fa885828601613f5d565b9150509250929050565b600080600060608486031215613fcb57613fca613c85565b5b6000613fd986828701613d09565b9350506020613fea86828701613d09565b9250506040613ffb86828701613d09565b9150509250925092565b6000806040838503121561401c5761401b613c85565b5b600061402a85828601613cd3565b925050602061403b85828601613cd3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061408c57607f821691505b602082108114156140a05761409f614045565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140dc602083613bd5565b91506140e7826140a6565b602082019050919050565b6000602082019050818103600083015261410b816140cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061414c82613ce8565b915061415783613ce8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561418c5761418b614112565b5b828201905092915050565b7f4d757374206b656570206665657320617420323125206f72206c657373000000600082015250565b60006141cd601d83613bd5565b91506141d882614197565b602082019050919050565b600060208201905081810360008301526141fc816141c0565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061425f603983613bd5565b915061426a82614203565b604082019050919050565b6000602082019050818103600083015261428e81614252565b9050919050565b60006142a082613ce8565b91506142ab83613ce8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142e4576142e3614112565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061432982613ce8565b915061433483613ce8565b925082614344576143436142ef565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006143ab603583613bd5565b91506143b68261434f565b604082019050919050565b600060208201905081810360008301526143da8161439e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061443d603483613bd5565b9150614448826143e1565b604082019050919050565b6000602082019050818103600083015261446c81614430565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144cf602683613bd5565b91506144da82614473565b604082019050919050565b600060208201905081810360008301526144fe816144c2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061453b601b83613bd5565b915061454682614505565b602082019050919050565b6000602082019050818103600083015261456a8161452e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006145cd602483613bd5565b91506145d882614571565b604082019050919050565b600060208201905081810360008301526145fc816145c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061465f602283613bd5565b915061466a82614603565b604082019050919050565b6000602082019050818103600083015261468e81614652565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146f1602583613bd5565b91506146fc82614695565b604082019050919050565b60006020820190508181036000830152614720816146e4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614783602383613bd5565b915061478e82614727565b604082019050919050565b600060208201905081810360008301526147b281614776565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614815602983613bd5565b9150614820826147b9565b604082019050919050565b6000602082019050818103600083015261484481614808565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614881601683613bd5565b915061488c8261484b565b602082019050919050565b600060208201905081810360008301526148b081614874565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614939604983613bd5565b9150614944826148b7565b606082019050919050565b600060208201905081810360008301526149688161492c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006149cb603583613bd5565b91506149d68261496f565b604082019050919050565b600060208201905081810360008301526149fa816149be565b9050919050565b7f7472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f72616e73616374696f6e416d6f756e742e000000000000000000000000000000602082015250565b6000614a5d603183613bd5565b9150614a6882614a01565b604082019050919050565b60006020820190508181036000830152614a8c81614a50565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614ac9601383613bd5565b9150614ad482614a93565b602082019050919050565b60006020820190508181036000830152614af881614abc565b9050919050565b6000614b0a82613ce8565b9150614b1583613ce8565b925082821015614b2857614b27614112565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614b8f602a83613bd5565b9150614b9a82614b33565b604082019050919050565b60006020820190508181036000830152614bbe81614b82565b9050919050565b600081905092915050565b50565b6000614be0600083614bc5565b9150614beb82614bd0565b600082019050919050565b6000614c0182614bd3565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c67602183613bd5565b9150614c7282614c0b565b604082019050919050565b60006020820190508181036000830152614c9681614c5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614d0a81613cbc565b92915050565b600060208284031215614d2657614d25613c85565b5b6000614d3484828501614cfb565b91505092915050565b6000819050919050565b6000614d62614d5d614d5884614d3d565b613e18565b613ce8565b9050919050565b614d7281614d47565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dad81613caa565b82525050565b6000614dbf8383614da4565b60208301905092915050565b6000602082019050919050565b6000614de382614d78565b614ded8185614d83565b9350614df883614d94565b8060005b83811015614e29578151614e108882614db3565b9750614e1b83614dcb565b925050600181019050614dfc565b5085935050505092915050565b600060a082019050614e4b6000830188613dc1565b614e586020830187614d69565b8181036040830152614e6a8186614dd8565b9050614e796060830185613ee5565b614e866080830184613dc1565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204985baa705ee34d666bc1e15095daae47833fcdaf476c710be1ecc940275914164736f6c63430008090033
Deployed Bytecode
0x6080604052600436106103545760003560e01c80638095d564116101c6578063c0246668116100f7578063d85ba06311610095578063e71dc3f51161006f578063e71dc3f514610c8d578063f203acb614610cb8578063f2fde38b14610ce3578063f8b45b0514610d0c5761035b565b8063d85ba06314610bfa578063dd62ed3e14610c25578063e2f4560514610c625761035b565b8063c8c8ebe4116100d1578063c8c8ebe414610b3e578063cc2ffe7c14610b69578063d257b34f14610b94578063d2fcc00114610bd15761035b565b8063c024666814610ac1578063c17b5b8c14610aea578063c876d0b914610b135761035b565b80639a7a23d611610164578063a9059cbb1161013e578063a9059cbb146109f1578063adb873bd14610a2e578063b62496f514610a59578063bbc0c74214610a965761035b565b80639a7a23d6146109625780639fdc48241461098b578063a457c2d7146109b45761035b565b80638da5cb5b116101a05780638da5cb5b146108a457806395d89b41146108cf57806396880b17146108fa578063975d71e2146109375761035b565b80638095d5641461083b578063809d458d146108645780638a8c523c1461088d5761035b565b806339509351116102a05780636a486a8e1161023e578063715018a611610218578063715018a6146107a5578063751039fc146107bc5780637571336a146107e75780637ab43983146108105761035b565b80636a486a8e146107125780636b2fb1241461073d57806370a08231146107685761035b565b80634fbee1931161027a5780634fbee19314610654578063563df32f146106915780635c068a8c146106bc5780636042f719146106e75761035b565b806339509351146105c157806349bd5a5e146105fe5780634a62bb65146106295761035b565b806318160ddd1161030d57806323136371116102e7578063231363711461050357806323b872dd1461052e57806327c8f8351461056b578063313ce567146105965761035b565b806318160ddd146104845780631d777856146104af5780631fa07da5146104da5761035b565b806306fdde0314610360578063095ea7b31461038b57806310d5de53146103c857806312611ae814610405578063150de0bb146104305780631694505e146104595761035b565b3661035b57005b600080fd5b34801561036c57600080fd5b50610375610d37565b6040516103829190613c63565b60405180910390f35b34801561039757600080fd5b506103b260048036038101906103ad9190613d1e565b610dc9565b6040516103bf9190613d79565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea9190613d94565b610de7565b6040516103fc9190613d79565b60405180910390f35b34801561041157600080fd5b5061041a610e07565b6040516104279190613dd0565b60405180910390f35b34801561043c57600080fd5b5061045760048036038101906104529190613deb565b610e0d565b005b34801561046557600080fd5b5061046e610ec4565b60405161047b9190613e77565b60405180910390f35b34801561049057600080fd5b50610499610ee8565b6040516104a69190613dd0565b60405180910390f35b3480156104bb57600080fd5b506104c4610ef2565b6040516104d19190613dd0565b60405180910390f35b3480156104e657600080fd5b5061050160048036038101906104fc9190613deb565b610ef8565b005b34801561050f57600080fd5b50610518610faf565b6040516105259190613dd0565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613e92565b610fb5565b6040516105629190613d79565b60405180910390f35b34801561057757600080fd5b5061058061108e565b60405161058d9190613ef4565b60405180910390f35b3480156105a257600080fd5b506105ab611094565b6040516105b89190613f2b565b60405180910390f35b3480156105cd57600080fd5b506105e860048036038101906105e39190613d1e565b61109d565b6040516105f59190613d79565b60405180910390f35b34801561060a57600080fd5b50610613611150565b6040516106209190613ef4565b60405180910390f35b34801561063557600080fd5b5061063e611174565b60405161064b9190613d79565b60405180910390f35b34801561066057600080fd5b5061067b60048036038101906106769190613d94565b611187565b6040516106889190613d79565b60405180910390f35b34801561069d57600080fd5b506106a66111dd565b6040516106b39190613ef4565b60405180910390f35b3480156106c857600080fd5b506106d1611203565b6040516106de9190613dd0565b60405180910390f35b3480156106f357600080fd5b506106fc611209565b6040516107099190613dd0565b60405180910390f35b34801561071e57600080fd5b5061072761120f565b6040516107349190613dd0565b60405180910390f35b34801561074957600080fd5b50610752611215565b60405161075f9190613dd0565b60405180910390f35b34801561077457600080fd5b5061078f600480360381019061078a9190613d94565b61121b565b60405161079c9190613dd0565b60405180910390f35b3480156107b157600080fd5b506107ba61126c565b005b3480156107c857600080fd5b506107d16113c4565b6040516107de9190613d79565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190613f72565b61147f565b005b34801561081c57600080fd5b50610825611571565b6040516108329190613dd0565b60405180910390f35b34801561084757600080fd5b50610862600480360381019061085d9190613fb2565b611577565b005b34801561087057600080fd5b5061088b60048036038101906108869190613d94565b611691565b005b34801561089957600080fd5b506108a261176c565b005b3480156108b057600080fd5b506108b9611820565b6040516108c69190613ef4565b60405180910390f35b3480156108db57600080fd5b506108e461184a565b6040516108f19190613c63565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190613d94565b6118dc565b60405161092e9190613d79565b60405180910390f35b34801561094357600080fd5b5061094c6118fb565b6040516109599190613dd0565b60405180910390f35b34801561096e57600080fd5b5061098960048036038101906109849190613f72565b611901565b005b34801561099757600080fd5b506109b260048036038101906109ad9190613deb565b611a35565b005b3480156109c057600080fd5b506109db60048036038101906109d69190613d1e565b611ad6565b6040516109e89190613d79565b60405180910390f35b3480156109fd57600080fd5b50610a186004803603810190610a139190613d1e565b611ba3565b604051610a259190613d79565b60405180910390f35b348015610a3a57600080fd5b50610a43611bc1565b604051610a509190613dd0565b60405180910390f35b348015610a6557600080fd5b50610a806004803603810190610a7b9190613d94565b611bc7565b604051610a8d9190613d79565b60405180910390f35b348015610aa257600080fd5b50610aab611be7565b604051610ab89190613d79565b60405180910390f35b348015610acd57600080fd5b50610ae86004803603810190610ae39190613f72565b611bfa565b005b348015610af657600080fd5b50610b116004803603810190610b0c9190613fb2565b611cec565b005b348015610b1f57600080fd5b50610b28611e06565b604051610b359190613d79565b60405180910390f35b348015610b4a57600080fd5b50610b53611e19565b604051610b609190613dd0565b60405180910390f35b348015610b7557600080fd5b50610b7e611e1f565b604051610b8b9190613dd0565b60405180910390f35b348015610ba057600080fd5b50610bbb6004803603810190610bb69190613deb565b611e25565b604051610bc89190613d79565b60405180910390f35b348015610bdd57600080fd5b50610bf86004803603810190610bf39190613f72565b611fbf565b005b348015610c0657600080fd5b50610c0f6120b1565b604051610c1c9190613dd0565b60405180910390f35b348015610c3157600080fd5b50610c4c6004803603810190610c479190614005565b6120b7565b604051610c599190613dd0565b60405180910390f35b348015610c6e57600080fd5b50610c7761213e565b604051610c849190613dd0565b60405180910390f35b348015610c9957600080fd5b50610ca2612144565b604051610caf9190613dd0565b60405180910390f35b348015610cc457600080fd5b50610ccd61214a565b604051610cda9190613dd0565b60405180910390f35b348015610cef57600080fd5b50610d0a6004803603810190610d059190613d94565b612150565b005b348015610d1857600080fd5b50610d21612317565b604051610d2e9190613dd0565b60405180910390f35b606060038054610d4690614074565b80601f0160208091040260200160405190810160405280929190818152602001828054610d7290614074565b8015610dbf5780601f10610d9457610100808354040283529160200191610dbf565b820191906000526020600020905b815481529060010190602001808311610da257829003601f168201915b5050505050905090565b6000610ddd610dd661237b565b8484612383565b6001905092915050565b601f6020528060005260406000206000915054906101000a900460ff1681565b601a5481565b610e1561237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ea4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9b906140f2565b60405180910390fd5b6001811015610eb257600080fd5b80601b81905550610ec161254e565b50565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600754905090565b60195481565b610f0061237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f86906140f2565b60405180910390fd5b6001811015610f9d57600080fd5b80601c81905550610fac61254e565b50565b60135481565b6000610fc28484846125b6565b61108384610fce61237b565b61107e85604051806060016040528060288152602001614e9160289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061103461237b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316c9092919063ffffffff16565b612383565b600190509392505050565b61dead81565b60006006905090565b60006111466110aa61237b565b8461114185600160006110bb61237b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231d90919063ffffffff16565b612383565b6001905092915050565b7f00000000000000000000000058416c9e93e200b91dcaa346c5335fa32870aa0e81565b600d60159054906101000a900460ff1681565b6000601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60115481565b60175481565b60145481565b60155481565b6000611265600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546131d0565b9050919050565b61127461237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fa906140f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60006113ce61237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461145d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611454906140f2565b60405180910390fd5b6000600d60156101000a81548160ff0219169083151502179055506001905090565b61148761237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611516576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150d906140f2565b60405180910390fd5b80601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601b5481565b61157f61237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461160e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611605906140f2565b60405180910390fd5b8260118190555081601281905550806013819055506013546012546011546116369190614141565b6116409190614141565b6010819055506015601054111561168c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611683906141e3565b60405180910390fd5b505050565b61169961237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611728576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171f906140f2565b60405180910390fd5b80600d60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61177461237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611803576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fa906140f2565b60405180910390fd5b6001600d60166101000a81548160ff021916908315150217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461185990614074565b80601f016020809104026020016040519081016040528092919081815260200182805461188590614074565b80156118d25780601f106118a7576101008083540402835291602001916118d2565b820191906000526020600020905b8154815290600101906020018083116118b557829003601f168201915b5050505050905090565b602080528060005260406000206000915054906101000a900460ff1681565b601c5481565b61190961237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198f906140f2565b60405180910390fd5b7f00000000000000000000000058416c9e93e200b91dcaa346c5335fa32870aa0e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e90614275565b60405180910390fd5b611a31828261323e565b5050565b611a3d61237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611acc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ac3906140f2565b60405180910390fd5b80601d8190555050565b6000611b99611ae361237b565b84611b9485604051806060016040528060258152602001614eb96025913960016000611b0d61237b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461316c9092919063ffffffff16565b612383565b6001905092915050565b6000611bb7611bb061237b565b84846125b6565b6001905092915050565b60165481565b60216020528060005260406000206000915054906101000a900460ff1681565b600d60169054906101000a900460ff1681565b611c0261237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c88906140f2565b60405180910390fd5b80601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b611cf461237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d7a906140f2565b60405180910390fd5b826015819055508160168190555080601781905550601754601654601554611dab9190614141565b611db59190614141565b60148190555060156014541115611e01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df8906141e3565b60405180910390fd5b505050565b600f60009054906101000a900460ff1681565b600a5481565b60185481565b6000611e2f61237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb5906140f2565b60405180910390fd5b620f4240620186a06001611ed0610ee8565b611eda9190614295565b611ee4919061431e565b611eee919061431e565b821015611f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f27906143c1565b60405180910390fd5b620f42406103e86005611f41610ee8565b611f4b9190614295565b611f55919061431e565b611f5f919061431e565b821115611fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9890614453565b60405180910390fd5b620f424082611fb09190614295565b600c8190555060019050919050565b611fc761237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612056576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204d906140f2565b60405180910390fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600c5481565b60125481565b601d5481565b61215861237b565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121de906140f2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612257576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161224e906144e5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600b5481565b600080828461232c9190614141565b905083811015612371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161236890614551565b60405180910390fd5b8091505092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156123f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ea906145e3565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612463576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245a90614675565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516125419190613dd0565b60405180910390a3505050565b6064601c546007546125609190614295565b61256a919061431e565b600a8190555061271060016007546125829190614295565b61258c919061431e565b600c819055506064601b546007546125a49190614295565b6125ae919061431e565b600b81905550565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261d90614707565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612696576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161268d90614799565b60405180910390fd5b600081116126d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d09061482b565b60405180910390fd5b600d60159054906101000a900460ff1615612cf0576126f6611820565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127645750612734611820565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561279d5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127d7575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156127f05750600d60009054906101000a900460ff16155b15612cef57600d60169054906101000a900460ff166128ea57601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128aa5750601e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6128e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128e090614897565b60405180910390fd5b5b600f60009054906101000a900460ff1615612abf57612907611820565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561298e57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156129e657507f00000000000000000000000058416c9e93e200b91dcaa346c5335fa32870aa0e73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15612abe5743600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410612a6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a639061494f565b60405180910390fd5b601d5443612a7a9190614141565b600e60003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612b625750601f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612bad57600a54811115612bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba3906149e1565b60405180910390fd5b5b601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612c4457600a54811115612c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c3a90614a73565b60405180910390fd5b5b602060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612cee57600b54612ca18361121b565b82612cac9190614141565b1115612ced576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ce490614adf565b60405180910390fd5b5b5b5b6000612cfb3061121b565b90506000600c548210159050808015612d215750600d60009054906101000a900460ff16155b8015612d775750602160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612dcd5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015612e235750601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e67576001600d60006101000a81548160ff021916908315150217905550612e4b613299565b6000600d60006101000a81548160ff0219169083151502179055505b6000600d60009054906101000a900460ff16159050601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612f1d5750601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f2757600090505b600080821561315657602160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612fd557507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614155b1561301b576130026064612ff46010548961335b90919063ffffffff16565b6133d690919063ffffffff16565b915061301686601154601254601354613420565b613103565b602160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130c057507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b15613102576130ed60646130df6014548961335b90919063ffffffff16565b6133d690919063ffffffff16565b915061310186601554601654601754613420565b5b5b60008211156131475761311988308460006134e0565b6000601a5460195461312b9190614141565b905060008082119050801561314457613143826134f2565b5b50505b81866131539190614aff565b95505b613162888888846134e0565b5050505050505050565b60008383111582906131b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131ab9190613c63565b60405180910390fd5b50600083856131c39190614aff565b9050809150509392505050565b6000600854821115613217576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161320e90614ba5565b60405180910390fd5b6000613221613548565b905061323681846133d690919063ffffffff16565b915050919050565b80602160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006132a43061121b565b90506000808214156132b7575050613359565b6132c082613573565b6000601881905550600d60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161330e90614bf6565b60006040518083038185875af1925050503d806000811461334b576040519150601f19603f3d011682016040523d82523d6000602084013e613350565b606091505b50508091505050505b565b60008083141561336e57600090506133d0565b6000828461337c9190614295565b905082848261338b919061431e565b146133cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133c290614c7d565b60405180910390fd5b809150505b92915050565b600061341883836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506137bf565b905092915050565b6134466064613438858761335b90919063ffffffff16565b6133d690919063ffffffff16565b601860008282546134579190614141565b925050819055506134846064613476848761335b90919063ffffffff16565b6133d690919063ffffffff16565b601960008282546134959190614141565b925050819055506134c260646134b4838761335b90919063ffffffff16565b6133d690919063ffffffff16565b601a60008282546134d39190614141565b9250508190555050505050565b6134ec84848484613822565b50505050565b6135013061dead8360326134e0565b6135156002826133d690919063ffffffff16565b600760008282546135269190614aff565b925050819055506000601a81905550600060198190555061354561254e565b50565b60008060006135556139e2565b9150915061356c81836133d690919063ffffffff16565b9250505090565b6000600267ffffffffffffffff8111156135905761358f614c9d565b5b6040519080825280602002602001820160405280156135be5781602001602082028036833780820191505090505b50905030816000815181106135d6576135d5614ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561367657600080fd5b505afa15801561368a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136ae9190614d10565b816001815181106136c2576136c1614ccc565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050613727307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d84612383565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613789959493929190614e36565b600060405180830381600087803b1580156137a357600080fd5b505af11580156137b7573d6000803e3d6000fd5b505050505050565b60008083118290613806576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137fd9190613c63565b60405180910390fd5b5060008385613815919061431e565b9050809150509392505050565b60008060008060006138348787613a3b565b9450945094509450945061389085600660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613a9590919063ffffffff16565b600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061392584600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461231d90919063ffffffff16565b600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506139728382613adf565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516139cf9190613dd0565b60405180910390a3505050505050505050565b60008060006008549050600065082f79cd90009050613a1265082f79cd90006008546133d690919063ffffffff16565b821015613a2e5760085465082f79cd9000935093505050613a37565b81819350935050505b9091565b6000806000806000806000613a508989613b19565b915091506000613a5e613548565b90506000806000613a708d8686613b6c565b92509250925082828288889a509a509a509a509a505050505050509295509295909350565b6000613ad783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061316c565b905092915050565b613af482600854613a9590919063ffffffff16565b600881905550613b0f8160095461231d90919063ffffffff16565b6009819055505050565b6000806000613b446064613b36868861335b90919063ffffffff16565b6133d690919063ffffffff16565b90506000613b5b8287613a9590919063ffffffff16565b905080829350935050509250929050565b600080600080613b85858861335b90919063ffffffff16565b90506000613b9c868861335b90919063ffffffff16565b90506000613bb38284613a9590919063ffffffff16565b905082818395509550955050505093509350939050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613c04578082015181840152602081019050613be9565b83811115613c13576000848401525b50505050565b6000601f19601f8301169050919050565b6000613c3582613bca565b613c3f8185613bd5565b9350613c4f818560208601613be6565b613c5881613c19565b840191505092915050565b60006020820190508181036000830152613c7d8184613c2a565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000613cb582613c8a565b9050919050565b613cc581613caa565b8114613cd057600080fd5b50565b600081359050613ce281613cbc565b92915050565b6000819050919050565b613cfb81613ce8565b8114613d0657600080fd5b50565b600081359050613d1881613cf2565b92915050565b60008060408385031215613d3557613d34613c85565b5b6000613d4385828601613cd3565b9250506020613d5485828601613d09565b9150509250929050565b60008115159050919050565b613d7381613d5e565b82525050565b6000602082019050613d8e6000830184613d6a565b92915050565b600060208284031215613daa57613da9613c85565b5b6000613db884828501613cd3565b91505092915050565b613dca81613ce8565b82525050565b6000602082019050613de56000830184613dc1565b92915050565b600060208284031215613e0157613e00613c85565b5b6000613e0f84828501613d09565b91505092915050565b6000819050919050565b6000613e3d613e38613e3384613c8a565b613e18565b613c8a565b9050919050565b6000613e4f82613e22565b9050919050565b6000613e6182613e44565b9050919050565b613e7181613e56565b82525050565b6000602082019050613e8c6000830184613e68565b92915050565b600080600060608486031215613eab57613eaa613c85565b5b6000613eb986828701613cd3565b9350506020613eca86828701613cd3565b9250506040613edb86828701613d09565b9150509250925092565b613eee81613caa565b82525050565b6000602082019050613f096000830184613ee5565b92915050565b600060ff82169050919050565b613f2581613f0f565b82525050565b6000602082019050613f406000830184613f1c565b92915050565b613f4f81613d5e565b8114613f5a57600080fd5b50565b600081359050613f6c81613f46565b92915050565b60008060408385031215613f8957613f88613c85565b5b6000613f9785828601613cd3565b9250506020613fa885828601613f5d565b9150509250929050565b600080600060608486031215613fcb57613fca613c85565b5b6000613fd986828701613d09565b9350506020613fea86828701613d09565b9250506040613ffb86828701613d09565b9150509250925092565b6000806040838503121561401c5761401b613c85565b5b600061402a85828601613cd3565b925050602061403b85828601613cd3565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061408c57607f821691505b602082108114156140a05761409f614045565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006140dc602083613bd5565b91506140e7826140a6565b602082019050919050565b6000602082019050818103600083015261410b816140cf565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061414c82613ce8565b915061415783613ce8565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561418c5761418b614112565b5b828201905092915050565b7f4d757374206b656570206665657320617420323125206f72206c657373000000600082015250565b60006141cd601d83613bd5565b91506141d882614197565b602082019050919050565b600060208201905081810360008301526141fc816141c0565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d2060008201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b600061425f603983613bd5565b915061426a82614203565b604082019050919050565b6000602082019050818103600083015261428e81614252565b9050919050565b60006142a082613ce8565b91506142ab83613ce8565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156142e4576142e3614112565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061432982613ce8565b915061433483613ce8565b925082614344576143436142ef565b5b828204905092915050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60008201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b60006143ab603583613bd5565b91506143b68261434f565b604082019050919050565b600060208201905081810360008301526143da8161439e565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206869676865722074686160008201527f6e20302e352520746f74616c20737570706c792e000000000000000000000000602082015250565b600061443d603483613bd5565b9150614448826143e1565b604082019050919050565b6000602082019050818103600083015261446c81614430565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006144cf602683613bd5565b91506144da82614473565b604082019050919050565b600060208201905081810360008301526144fe816144c2565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061453b601b83613bd5565b915061454682614505565b602082019050919050565b6000602082019050818103600083015261456a8161452e565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006145cd602483613bd5565b91506145d882614571565b604082019050919050565b600060208201905081810360008301526145fc816145c0565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061465f602283613bd5565b915061466a82614603565b604082019050919050565b6000602082019050818103600083015261468e81614652565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006146f1602583613bd5565b91506146fc82614695565b604082019050919050565b60006020820190508181036000830152614720816146e4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614783602383613bd5565b915061478e82614727565b604082019050919050565b600060208201905081810360008301526147b281614776565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614815602983613bd5565b9150614820826147b9565b604082019050919050565b6000602082019050818103600083015261484481614808565b9050919050565b7f54726164696e67206973206e6f74206163746976652e00000000000000000000600082015250565b6000614881601683613bd5565b915061488c8261484b565b602082019050919050565b600060208201905081810360008301526148b081614874565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b6000614939604983613bd5565b9150614944826148b7565b606082019050919050565b600060208201905081810360008301526149688161492c565b9050919050565b7f427579207472616e7366657220616d6f756e742065786365656473207468652060008201527f6d61785472616e73616374696f6e416d6f756e742e0000000000000000000000602082015250565b60006149cb603583613bd5565b91506149d68261496f565b604082019050919050565b600060208201905081810360008301526149fa816149be565b9050919050565b7f7472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f72616e73616374696f6e416d6f756e742e000000000000000000000000000000602082015250565b6000614a5d603183613bd5565b9150614a6882614a01565b604082019050919050565b60006020820190508181036000830152614a8c81614a50565b9050919050565b7f4d61782077616c6c657420657863656564656400000000000000000000000000600082015250565b6000614ac9601383613bd5565b9150614ad482614a93565b602082019050919050565b60006020820190508181036000830152614af881614abc565b9050919050565b6000614b0a82613ce8565b9150614b1583613ce8565b925082821015614b2857614b27614112565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614b8f602a83613bd5565b9150614b9a82614b33565b604082019050919050565b60006020820190508181036000830152614bbe81614b82565b9050919050565b600081905092915050565b50565b6000614be0600083614bc5565b9150614beb82614bd0565b600082019050919050565b6000614c0182614bd3565b9150819050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c67602183613bd5565b9150614c7282614c0b565b604082019050919050565b60006020820190508181036000830152614c9681614c5a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050614d0a81613cbc565b92915050565b600060208284031215614d2657614d25613c85565b5b6000614d3484828501614cfb565b91505092915050565b6000819050919050565b6000614d62614d5d614d5884614d3d565b613e18565b613ce8565b9050919050565b614d7281614d47565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b614dad81613caa565b82525050565b6000614dbf8383614da4565b60208301905092915050565b6000602082019050919050565b6000614de382614d78565b614ded8185614d83565b9350614df883614d94565b8060005b83811015614e29578151614e108882614db3565b9750614e1b83614dcb565b925050600181019050614dfc565b5085935050505092915050565b600060a082019050614e4b6000830188613dc1565b614e586020830187614d69565b8181036040830152614e6a8186614dd8565b9050614e796060830185613ee5565b614e866080830184613dc1565b969550505050505056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212204985baa705ee34d666bc1e15095daae47833fcdaf476c710be1ecc940275914164736f6c63430008090033
Deployed Bytecode Sourcemap
27484:15592:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7645:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9852:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29212:64;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28902:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32541:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27966:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;39950:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28867:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32377:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28621:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10498:355;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28069:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8596:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11259:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28024:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28196:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34783:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28163:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28544:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28782:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28668:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28703:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;40055:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22069:148;;;;;;;;;;;;;:::i;:::-;;31720:121;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32816:144;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28949:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33112:363;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34416:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;31582:83;;;;;;;;;;;;;:::i;:::-;;21427:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7865:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29277:59;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28982:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34018:247;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32707:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11975:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9263:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28745:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29495:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28236:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33877:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33486:382;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28460:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27850:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28828:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31903:463;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32969:134;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28510:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9502:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27923:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28585:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29014:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22373:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27892:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7645:100;7699:13;7732:5;7725:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7645:100;:::o;9852:169::-;9935:4;9952:39;9961:12;:10;:12::i;:::-;9975:7;9984:6;9952:8;:39::i;:::-;10009:4;10002:11;;9852:169;;;;:::o;29212:64::-;;;;;;;;;;;;;;;;;;;;;;:::o;28902:35::-;;;;:::o;32541:157::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32632:1:::1;32622:6;:11;;32614:20;;;::::0;::::1;;32659:6;32645:11;:20;;;;32676:14;:12;:14::i;:::-;32541:157:::0;:::o;27966:51::-;;;:::o;39950:96::-;40003:7;40030:8;;40023:15;;39950:96;:::o;28867:28::-;;;;:::o;32377:155::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32467:1:::1;32457:6;:11;;32449:20;;;::::0;::::1;;32493:6;32480:10;:19;;;;32510:14;:12;:14::i;:::-;32377:155:::0;:::o;28621:35::-;;;;:::o;10498:355::-;10638:4;10655:36;10665:6;10673:9;10684:6;10655:9;:36::i;:::-;10702:121;10711:6;10719:12;:10;:12::i;:::-;10733:89;10771:6;10733:89;;;;;;;;;;;;;;;;;:11;:19;10745:6;10733:19;;;;;;;;;;;;;;;:33;10753:12;:10;:12::i;:::-;10733:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;10702:8;:121::i;:::-;10841:4;10834:11;;10498:355;;;;;:::o;28069:53::-;28115:6;28069:53;:::o;8596:92::-;8654:5;8679:1;8672:8;;8596:92;:::o;11259:218::-;11347:4;11364:83;11373:12;:10;:12::i;:::-;11387:7;11396:50;11435:10;11396:11;:25;11408:12;:10;:12::i;:::-;11396:25;;;;;;;;;;;;;;;:34;11422:7;11396:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;11364:8;:83::i;:::-;11465:4;11458:11;;11259:218;;;;:::o;28024:38::-;;;:::o;28196:33::-;;;;;;;;;;;;;:::o;34783:127::-;34850:4;34874:19;:28;34894:7;34874:28;;;;;;;;;;;;;;;;;;;;;;;;;34867:35;;34783:127;;;:::o;28163:23::-;;;;;;;;;;;;;:::o;28544:34::-;;;;:::o;28782:36::-;;;;:::o;28668:28::-;;;;:::o;28703:35::-;;;;:::o;40055:138::-;40121:7;40148:37;40168:7;:16;40176:7;40168:16;;;;;;;;;;;;;;;;40148:19;:37::i;:::-;40141:44;;40055:138;;;:::o;22069:148::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22176:1:::1;22139:40;;22160:6;;;;;;;;;;;22139:40;;;;;;;;;;;;22207:1;22190:6;;:19;;;;;;;;;;;;;;;;;;22069:148::o:0;31720:121::-;31772:4;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31806:5:::1;31789:14;;:22;;;;;;;;;;;;;;;;;;31829:4;31822:11;;31720:121:::0;:::o;32816:144::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32948:4:::1;32906:31;:39;32938:6;32906:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;32816:144:::0;;:::o;28949:26::-;;;;:::o;33112:363::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33246:12:::1;33229:14;:29;;;;33282:8;33269:10;:21;;;;33320:14;33301:16;:33;;;;33390:16;;33377:10;;33360:14;;:27;;;;:::i;:::-;:46;;;;:::i;:::-;33345:12;:61;;;;33431:2;33415:12;;:18;;33407:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;33112:363:::0;;;:::o;34416:123::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34514:17:::1;34503:8;;:28;;;;;;;;;;;;;;;;;;34416:123:::0;:::o;31582:83::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31653:4:::1;31637:13;;:20;;;;;;;;;;;;;;;;;;31582:83::o:0;21427:79::-;21465:7;21492:6;;;;;;;;;;;21485:13;;21427:79;:::o;7865:104::-;7921:13;7954:7;7947:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7865:104;:::o;29277:59::-;;;;;;;;;;;;;;;;;;;;;;:::o;28982:25::-;;;;:::o;34018:247::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;34127:13:::1;34119:21;;:4;:21;;;;34111:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;34216:41;34245:4;34251:5;34216:28;:41::i;:::-;34018:247:::0;;:::o;32707:98::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32791:6:::1;32778:10;:19;;;;32707:98:::0;:::o;11975:269::-;12068:4;12085:129;12094:12;:10;:12::i;:::-;12108:7;12117:96;12156:15;12117:96;;;;;;;;;;;;;;;;;:11;:25;12129:12;:10;:12::i;:::-;12117:25;;;;;;;;;;;;;;;:34;12143:7;12117:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;12085:8;:129::i;:::-;12232:4;12225:11;;11975:269;;;;:::o;9263:175::-;9349:4;9366:42;9376:12;:10;:12::i;:::-;9390:9;9401:6;9366:9;:42::i;:::-;9426:4;9419:11;;9263:175;;;;:::o;28745:30::-;;;;:::o;29495:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;28236:33::-;;;;;;;;;;;;;:::o;33877:132::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33993:8:::1;33962:19;:28;33982:7;33962:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;33877:132:::0;;:::o;33486:382::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33622:12:::1;33604:15;:30;;;;33659:8;33645:11;:22;;;;33698:14;33678:17;:34;;;;33771:17;;33757:11;;33739:15;;:29;;;;:::i;:::-;:49;;;;:::i;:::-;33723:13;:65;;;;33824:2;33807:13;;:19;;33799:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;33486:382:::0;;;:::o;28460:40::-;;;;;;;;;;;;;:::o;27850:35::-;;;;:::o;28828:32::-;;;;:::o;31903:463::-;31984:4;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;32063:3:::1;32053:6;32049:1;32033:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:26;;;;:::i;:::-;32032:34;;;;:::i;:::-;32019:9;:47;;32011:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;32195:3;32187:4;32183:1;32167:13;:11;:13::i;:::-;:17;;;;:::i;:::-;:24;;;;:::i;:::-;32166:32;;;;:::i;:::-;32153:9;:45;;32145:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;32310:5;32297:9;:19;;;;:::i;:::-;32276:18;:40;;;;32344:4;32337:11;;31903:463:::0;;;:::o;32969:134::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;33091:4:::1;33054:26;:34;33081:6;33054:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;32969:134:::0;;:::o;28510:27::-;;;;:::o;9502:151::-;9591:7;9618:11;:18;9630:5;9618:18;;;;;;;;;;;;;;;:27;9637:7;9618:27;;;;;;;;;;;;;;;;9611:34;;9502:151;;;;:::o;27923:33::-;;;;:::o;28585:29::-;;;;:::o;29014:25::-;;;;:::o;22373:244::-;21650:12;:10;:12::i;:::-;21640:22;;:6;;;;;;;;;;;:22;;;21632:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22482:1:::1;22462:22;;:8;:22;;;;22454:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;22572:8;22543:38;;22564:6;;;;;;;;;;;22543:38;;;;;;;;;;;;22601:8;22592:6;;:17;;;;;;;;;;;;;;;;;;22373:244:::0;:::o;27892:24::-;;;;:::o;16490:182::-;16548:7;16568:9;16584:1;16580;:5;;;;:::i;:::-;16568:17;;16609:1;16604;:6;;16596:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;16663:1;16656:8;;;16490:182;;;;:::o;279:98::-;332:7;359:10;352:17;;279:98;:::o;15128:384::-;15281:1;15264:19;;:5;:19;;;;15256:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15362:1;15343:21;;:7;:21;;;;15335:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15447:6;15417:11;:18;15429:5;15417:18;;;;;;;;;;;;;;;:27;15436:7;15417:27;;;;;;;;;;;;;;;:36;;;;15488:7;15472:32;;15481:5;15472:32;;;15497:6;15472:32;;;;;;:::i;:::-;;;;;;;;15128:384;;;:::o;34548:226::-;34638:3;34625:10;;34614:8;;:21;;;;:::i;:::-;:27;;;;:::i;:::-;34591:20;:50;;;;34688:5;34684:1;34673:8;;:12;;;;:::i;:::-;:20;;;;:::i;:::-;34652:18;:41;;;;34763:3;34749:11;;34738:8;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;34726:9;:40;;;;34548:226::o;34919:3708::-;35067:1;35051:18;;:4;:18;;;;35043:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;35144:1;35130:16;;:2;:16;;;;35122:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;35214:1;35205:6;:10;35197:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;35279:14;;;;;;;;;;;35275:1516;;;35340:7;:5;:7::i;:::-;35332:15;;:4;:15;;;;:49;;;;;35374:7;:5;:7::i;:::-;35368:13;;:2;:13;;;;35332:49;:86;;;;;35416:1;35402:16;;:2;:16;;;;35332:86;:128;;;;;35453:6;35439:21;;:2;:21;;;;35332:128;:158;;;;;35482:8;;;;;;;;;;;35481:9;35332:158;35310:1470;;;35530:13;;;;;;;;;;;35525:150;;35576:19;:25;35596:4;35576:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;35605:19;:23;35625:2;35605:23;;;;;;;;;;;;;;;;;;;;;;;;;35576:52;35568:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;35525:150;35699:20;;;;;;;;;;;35695:436;;;35753:7;:5;:7::i;:::-;35747:13;;:2;:13;;;;:47;;;;;35778:15;35764:30;;:2;:30;;;;35747:47;:79;;;;;35812:13;35798:28;;:2;:28;;;;35747:79;35743:369;;;35904:12;35862:28;:39;35891:9;35862:39;;;;;;;;;;;;;;;;:54;35854:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;36078:10;;36063:12;:25;;;;:::i;:::-;36021:28;:39;36050:9;36021:39;;;;;;;;;;;;;;;:67;;;;35743:369;35695:436;36185:25;:31;36211:4;36185:31;;;;;;;;;;;;;;;;;;;;;;;;;:71;;;;;36221:31;:35;36253:2;36221:35;;;;;;;;;;;;;;;;;;;;;;;;;36220:36;36185:71;36181:216;;;36299:20;;36289:6;:30;;36281:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;36181:216;36423:31;:37;36455:4;36423:37;;;;;;;;;;;;;;;;;;;;;;;;;36418:179;;36503:20;;36493:6;:30;;36485:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;36418:179;36623:26;:30;36650:2;36623:30;;;;;;;;;;;;;;;;;;;;;;;;;36618:147;;36712:9;;36695:13;36705:2;36695:9;:13::i;:::-;36686:6;:22;;;;:::i;:::-;:35;;36678:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;36618:147;35310:1470;35275:1516;36825:28;36856:24;36874:4;36856:9;:24::i;:::-;36825:55;;36900:12;36939:18;;36915:20;:42;;36900:57;;36989:7;:33;;;;;37014:8;;;;;;;;;;;37013:9;36989:33;:82;;;;;37040:25;:31;37066:4;37040:31;;;;;;;;;;;;;;;;;;;;;;;;;37039:32;36989:82;:125;;;;;37089:19;:25;37109:4;37089:25;;;;;;;;;;;;;;;;;;;;;;;;;37088:26;36989:125;:166;;;;;37132:19;:23;37152:2;37132:23;;;;;;;;;;;;;;;;;;;;;;;;;37131:24;36989:166;36971:310;;;37193:4;37182:8;;:15;;;;;;;;;;;;;;;;;;37225:10;:8;:10::i;:::-;37264:5;37253:8;;:16;;;;;;;;;;;;;;;;;;36971:310;37294:12;37310:8;;;;;;;;;;;37309:9;37294:24;;37421:19;:25;37441:4;37421:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;37450:19;:23;37470:2;37450:23;;;;;;;;;;;;;;;;;;;;;;;;;37421:52;37417:100;;;37500:5;37490:15;;37417:100;37536:12;37563:21;37593:7;37589:970;;;37646:25;:31;37672:4;37646:31;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;37695:15;37681:30;;:2;:30;;;;37646:65;37642:528;;;37739:33;37768:3;37739:24;37750:12;;37739:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;37732:40;;37791:70;37808:6;37816:14;;37832:10;;37844:16;;37791;:70::i;:::-;37642:528;;;37927:25;:29;37953:2;37927:29;;;;;;;;;;;;;;;;;;;;;;;;;:65;;;;;37976:15;37960:32;;:4;:32;;;;37927:65;37923:247;;;38024:34;38054:3;38024:25;38035:13;;38024:6;:10;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;38017:41;;38081:73;38098:6;38106:15;;38123:11;;38136:17;;38081:16;:73::i;:::-;37923:247;37642:528;38198:1;38191:4;:8;38187:329;;;38220:44;38235:4;38249;38256;38262:1;38220:14;:44::i;:::-;38283:18;38320:20;;38304:13;;:36;;;;:::i;:::-;38283:57;;38359:16;38391:1;38378:10;:14;38359:33;;38417:11;38414:84;;;38452:26;38467:10;38452:14;:26::i;:::-;38414:84;38201:315;;38187:329;38543:4;38533:14;;;;;:::i;:::-;;;37589:970;38572:47;38587:4;38593:2;38597:6;38605:13;38572:14;:47::i;:::-;35032:3595;;;;;34919:3708;;;:::o;17385:193::-;17471:7;17504:1;17499;:6;;17507:12;17491:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;17531:9;17547:1;17543;:5;;;;:::i;:::-;17531:17;;17569:1;17562:8;;;17385:193;;;;;:::o;40202:254::-;40269:7;40308;;40297;:18;;40289:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;40373:19;40396:10;:8;:10::i;:::-;40373:33;;40424:24;40436:11;40424:7;:11;;:24;;;;:::i;:::-;40417:31;;;40202:254;;;:::o;34274:133::-;34391:5;34357:25;:31;34383:4;34357:31;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;34274:133;;:::o;39575:347::-;39614:23;39640:24;39658:4;39640:9;:24::i;:::-;39614:50;;39675:12;39729:1;39710:15;:20;39707:34;;;39733:7;;;;39707:34;39754:33;39771:15;39754:16;:33::i;:::-;39821:1;39801:17;:21;;;;39866:8;;;;;;;;;;;39858:22;;39888:21;39858:56;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39845:69;;;;;39603:319;;39575:347;:::o;17836:473::-;17894:7;18144:1;18139;:6;18135:47;;;18169:1;18162:8;;;;18135:47;18195:9;18211:1;18207;:5;;;;:::i;:::-;18195:17;;18240:1;18235;18231;:5;;;;:::i;:::-;:10;18223:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18300:1;18293:8;;;17836:473;;;;;:::o;18784:131::-;18842:7;18868:39;18872:1;18875;18868:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;18861:46;;18784:131;;;;:::o;38636:318::-;38783:34;38813:3;38783:25;38795:12;38783:7;:11;;:25;;;;:::i;:::-;:29;;:34;;;;:::i;:::-;38762:17;;:55;;;;;;;:::i;:::-;;;;;;;;38845:30;38871:3;38845:21;38857:8;38845:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;38828:13;;:47;;;;;;;:::i;:::-;;;;;;;;38910:36;38942:3;38910:27;38922:14;38910:7;:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;38886:20;;:60;;;;;;;:::i;:::-;;;;;;;;38636:318;;;;:::o;40465:189::-;40587:59;40605:6;40613:9;40624:6;40632:13;40587:17;:59::i;:::-;40465:189;;;;:::o;42819:248::-;42879:55;42902:4;28115:6;42922:7;42931:2;42879:14;:55::i;:::-;42957:14;42969:1;42957:7;:11;;:14;;;;:::i;:::-;42945:8;;:26;;;;;;;:::i;:::-;;;;;;;;43005:1;42982:20;:24;;;;43033:1;43017:13;:17;;;;43045:14;:12;:14::i;:::-;42819:248;:::o;42377:163::-;42418:7;42439:15;42456;42475:19;:17;:19::i;:::-;42438:56;;;;42512:20;42524:7;42512;:11;;:20;;;;:::i;:::-;42505:27;;;;42377:163;:::o;38963:603::-;39092:21;39130:1;39116:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39092:40;;39161:4;39143;39148:1;39143:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;39187:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;39177:4;39182:1;39177:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;39223:62;39240:4;39255:15;39273:11;39223:8;:62::i;:::-;39325:15;:66;;;39406:11;39432:1;39476:4;39503;39523:15;39325:224;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;39018:548;38963:603;:::o;19410:279::-;19496:7;19528:1;19524;:5;19531:12;19516:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;19555:9;19571:1;19567;:5;;;;:::i;:::-;19555:17;;19680:1;19673:8;;;19410:279;;;;;:::o;40663:483::-;40785:15;40802:23;40827:12;40841:23;40866:12;40882:34;40893:7;40902:13;40882:10;:34::i;:::-;40784:132;;;;;;;;;;40945:28;40965:7;40945;:15;40953:6;40945:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;40927:7;:15;40935:6;40927:15;;;;;;;;;;;;;;;:46;;;;41005:39;41028:15;41005:7;:18;41013:9;41005:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;40984:7;:18;40992:9;40984:18;;;;;;;;;;;;;;;:60;;;;41055:23;41067:4;41073;41055:11;:23::i;:::-;41111:9;41094:44;;41103:6;41094:44;;;41122:15;41094:44;;;;;;:::i;:::-;;;;;;;;40773:373;;;;;40663:483;;;;:::o;42549:259::-;42599:7;42608;42628:15;42646:7;;42628:25;;42664:15;27705:13;42664:25;;42717:20;27705:13;42717:7;;:11;;:20;;;;:::i;:::-;42707:7;:30;42703:61;;;42747:7;;27705:13;42739:25;;;;;;;;42703:61;42783:7;42792;42775:25;;;;;;42549:259;;;:::o;41311:449::-;41393:7;41402;41411;41420;41429;41450:23;41475:12;41491:35;41503:7;41512:13;41491:11;:35::i;:::-;41449:77;;;;41537:19;41560:10;:8;:10::i;:::-;41537:33;;41582:15;41599:23;41624:12;41640:39;41652:7;41661:4;41667:11;41640;:39::i;:::-;41581:98;;;;;;41698:7;41707:15;41724:4;41730:15;41747:4;41690:62;;;;;;;;;;;;;;;;41311:449;;;;;;;;:::o;16947:136::-;17005:7;17032:43;17036:1;17039;17032:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;17025:50;;16947:136;;;;:::o;41155:147::-;41233:17;41245:4;41233:7;;:11;;:17;;;;:::i;:::-;41223:7;:27;;;;41274:20;41289:4;41274:10;;:14;;:20;;;;:::i;:::-;41261:10;:33;;;;41155:147;;:::o;41760:265::-;41843:7;41852;41872:12;41887:35;41918:3;41887:26;41899:13;41887:7;:11;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;41872:50;;41933:23;41959:17;41971:4;41959:7;:11;;:17;;;;:::i;:::-;41933:43;;41995:15;42012:4;41987:30;;;;;;41760:265;;;;;:::o;42034:334::-;42129:7;42138;42147;42167:15;42185:24;42197:11;42185:7;:11;;:24;;;;:::i;:::-;42167:42;;42220:12;42235:21;42244:11;42235:4;:8;;:21;;;;:::i;:::-;42220:36;;42267:23;42293:17;42305:4;42293:7;:11;;:17;;;;:::i;:::-;42267:43;;42329:7;42338:15;42355:4;42321:39;;;;;;;;;42034:334;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:329::-;3553:6;3602:2;3590:9;3581:7;3577:23;3573:32;3570:119;;;3608:79;;:::i;:::-;3570:119;3728:1;3753:53;3798:7;3789:6;3778:9;3774:22;3753:53;:::i;:::-;3743:63;;3699:117;3494:329;;;;:::o;3829:118::-;3916:24;3934:5;3916:24;:::i;:::-;3911:3;3904:37;3829:118;;:::o;3953:222::-;4046:4;4084:2;4073:9;4069:18;4061:26;;4097:71;4165:1;4154:9;4150:17;4141:6;4097:71;:::i;:::-;3953:222;;;;:::o;4181:329::-;4240:6;4289:2;4277:9;4268:7;4264:23;4260:32;4257:119;;;4295:79;;:::i;:::-;4257:119;4415:1;4440:53;4485:7;4476:6;4465:9;4461:22;4440:53;:::i;:::-;4430:63;;4386:117;4181:329;;;;:::o;4516:60::-;4544:3;4565:5;4558:12;;4516:60;;;:::o;4582:142::-;4632:9;4665:53;4683:34;4692:24;4710:5;4692:24;:::i;:::-;4683:34;:::i;:::-;4665:53;:::i;:::-;4652:66;;4582:142;;;:::o;4730:126::-;4780:9;4813:37;4844:5;4813:37;:::i;:::-;4800:50;;4730:126;;;:::o;4862:153::-;4939:9;4972:37;5003:5;4972:37;:::i;:::-;4959:50;;4862:153;;;:::o;5021:185::-;5135:64;5193:5;5135:64;:::i;:::-;5130:3;5123:77;5021:185;;:::o;5212:276::-;5332:4;5370:2;5359:9;5355:18;5347:26;;5383:98;5478:1;5467:9;5463:17;5454:6;5383:98;:::i;:::-;5212:276;;;;:::o;5494:619::-;5571:6;5579;5587;5636:2;5624:9;5615:7;5611:23;5607:32;5604:119;;;5642:79;;:::i;:::-;5604:119;5762:1;5787:53;5832:7;5823:6;5812:9;5808:22;5787:53;:::i;:::-;5777:63;;5733:117;5889:2;5915:53;5960:7;5951:6;5940:9;5936:22;5915:53;:::i;:::-;5905:63;;5860:118;6017:2;6043:53;6088:7;6079:6;6068:9;6064:22;6043:53;:::i;:::-;6033:63;;5988:118;5494:619;;;;;:::o;6119:118::-;6206:24;6224:5;6206:24;:::i;:::-;6201:3;6194:37;6119:118;;:::o;6243:222::-;6336:4;6374:2;6363:9;6359:18;6351:26;;6387:71;6455:1;6444:9;6440:17;6431:6;6387:71;:::i;:::-;6243:222;;;;:::o;6471:86::-;6506:7;6546:4;6539:5;6535:16;6524:27;;6471:86;;;:::o;6563:112::-;6646:22;6662:5;6646:22;:::i;:::-;6641:3;6634:35;6563:112;;:::o;6681:214::-;6770:4;6808:2;6797:9;6793:18;6785:26;;6821:67;6885:1;6874:9;6870:17;6861:6;6821:67;:::i;:::-;6681:214;;;;:::o;6901:116::-;6971:21;6986:5;6971:21;:::i;:::-;6964:5;6961:32;6951:60;;7007:1;7004;6997:12;6951:60;6901:116;:::o;7023:133::-;7066:5;7104:6;7091:20;7082:29;;7120:30;7144:5;7120:30;:::i;:::-;7023:133;;;;:::o;7162:468::-;7227:6;7235;7284:2;7272:9;7263:7;7259:23;7255:32;7252:119;;;7290:79;;:::i;:::-;7252:119;7410:1;7435:53;7480:7;7471:6;7460:9;7456:22;7435:53;:::i;:::-;7425:63;;7381:117;7537:2;7563:50;7605:7;7596:6;7585:9;7581:22;7563:50;:::i;:::-;7553:60;;7508:115;7162:468;;;;;:::o;7636:619::-;7713:6;7721;7729;7778:2;7766:9;7757:7;7753:23;7749:32;7746:119;;;7784:79;;:::i;:::-;7746:119;7904:1;7929:53;7974:7;7965:6;7954:9;7950:22;7929:53;:::i;:::-;7919:63;;7875:117;8031:2;8057:53;8102:7;8093:6;8082:9;8078:22;8057:53;:::i;:::-;8047:63;;8002:118;8159:2;8185:53;8230:7;8221:6;8210:9;8206:22;8185:53;:::i;:::-;8175:63;;8130:118;7636:619;;;;;:::o;8261:474::-;8329:6;8337;8386:2;8374:9;8365:7;8361:23;8357:32;8354:119;;;8392:79;;:::i;:::-;8354:119;8512:1;8537:53;8582:7;8573:6;8562:9;8558:22;8537:53;:::i;:::-;8527:63;;8483:117;8639:2;8665:53;8710:7;8701:6;8690:9;8686:22;8665:53;:::i;:::-;8655:63;;8610:118;8261:474;;;;;:::o;8741:180::-;8789:77;8786:1;8779:88;8886:4;8883:1;8876:15;8910:4;8907:1;8900:15;8927:320;8971:6;9008:1;9002:4;8998:12;8988:22;;9055:1;9049:4;9045:12;9076:18;9066:81;;9132:4;9124:6;9120:17;9110:27;;9066:81;9194:2;9186:6;9183:14;9163:18;9160:38;9157:84;;;9213:18;;:::i;:::-;9157:84;8978:269;8927:320;;;:::o;9253:182::-;9393:34;9389:1;9381:6;9377:14;9370:58;9253:182;:::o;9441:366::-;9583:3;9604:67;9668:2;9663:3;9604:67;:::i;:::-;9597:74;;9680:93;9769:3;9680:93;:::i;:::-;9798:2;9793:3;9789:12;9782:19;;9441:366;;;:::o;9813:419::-;9979:4;10017:2;10006:9;10002:18;9994:26;;10066:9;10060:4;10056:20;10052:1;10041:9;10037:17;10030:47;10094:131;10220:4;10094:131;:::i;:::-;10086:139;;9813:419;;;:::o;10238:180::-;10286:77;10283:1;10276:88;10383:4;10380:1;10373:15;10407:4;10404:1;10397:15;10424:305;10464:3;10483:20;10501:1;10483:20;:::i;:::-;10478:25;;10517:20;10535:1;10517:20;:::i;:::-;10512:25;;10671:1;10603:66;10599:74;10596:1;10593:81;10590:107;;;10677:18;;:::i;:::-;10590:107;10721:1;10718;10714:9;10707:16;;10424:305;;;;:::o;10735:179::-;10875:31;10871:1;10863:6;10859:14;10852:55;10735:179;:::o;10920:366::-;11062:3;11083:67;11147:2;11142:3;11083:67;:::i;:::-;11076:74;;11159:93;11248:3;11159:93;:::i;:::-;11277:2;11272:3;11268:12;11261:19;;10920:366;;;:::o;11292:419::-;11458:4;11496:2;11485:9;11481:18;11473:26;;11545:9;11539:4;11535:20;11531:1;11520:9;11516:17;11509:47;11573:131;11699:4;11573:131;:::i;:::-;11565:139;;11292:419;;;:::o;11717:244::-;11857:34;11853:1;11845:6;11841:14;11834:58;11926:27;11921:2;11913:6;11909:15;11902:52;11717:244;:::o;11967:366::-;12109:3;12130:67;12194:2;12189:3;12130:67;:::i;:::-;12123:74;;12206:93;12295:3;12206:93;:::i;:::-;12324:2;12319:3;12315:12;12308:19;;11967:366;;;:::o;12339:419::-;12505:4;12543:2;12532:9;12528:18;12520:26;;12592:9;12586:4;12582:20;12578:1;12567:9;12563:17;12556:47;12620:131;12746:4;12620:131;:::i;:::-;12612:139;;12339:419;;;:::o;12764:348::-;12804:7;12827:20;12845:1;12827:20;:::i;:::-;12822:25;;12861:20;12879:1;12861:20;:::i;:::-;12856:25;;13049:1;12981:66;12977:74;12974:1;12971:81;12966:1;12959:9;12952:17;12948:105;12945:131;;;13056:18;;:::i;:::-;12945:131;13104:1;13101;13097:9;13086:20;;12764:348;;;;:::o;13118:180::-;13166:77;13163:1;13156:88;13263:4;13260:1;13253:15;13287:4;13284:1;13277:15;13304:185;13344:1;13361:20;13379:1;13361:20;:::i;:::-;13356:25;;13395:20;13413:1;13395:20;:::i;:::-;13390:25;;13434:1;13424:35;;13439:18;;:::i;:::-;13424:35;13481:1;13478;13474:9;13469:14;;13304:185;;;;:::o;13495:240::-;13635:34;13631:1;13623:6;13619:14;13612:58;13704:23;13699:2;13691:6;13687:15;13680:48;13495:240;:::o;13741:366::-;13883:3;13904:67;13968:2;13963:3;13904:67;:::i;:::-;13897:74;;13980:93;14069:3;13980:93;:::i;:::-;14098:2;14093:3;14089:12;14082:19;;13741:366;;;:::o;14113:419::-;14279:4;14317:2;14306:9;14302:18;14294:26;;14366:9;14360:4;14356:20;14352:1;14341:9;14337:17;14330:47;14394:131;14520:4;14394:131;:::i;:::-;14386:139;;14113:419;;;:::o;14538:239::-;14678:34;14674:1;14666:6;14662:14;14655:58;14747:22;14742:2;14734:6;14730:15;14723:47;14538:239;:::o;14783:366::-;14925:3;14946:67;15010:2;15005:3;14946:67;:::i;:::-;14939:74;;15022:93;15111:3;15022:93;:::i;:::-;15140:2;15135:3;15131:12;15124:19;;14783:366;;;:::o;15155:419::-;15321:4;15359:2;15348:9;15344:18;15336:26;;15408:9;15402:4;15398:20;15394:1;15383:9;15379:17;15372:47;15436:131;15562:4;15436:131;:::i;:::-;15428:139;;15155:419;;;:::o;15580:225::-;15720:34;15716:1;15708:6;15704:14;15697:58;15789:8;15784:2;15776:6;15772:15;15765:33;15580:225;:::o;15811:366::-;15953:3;15974:67;16038:2;16033:3;15974:67;:::i;:::-;15967:74;;16050:93;16139:3;16050:93;:::i;:::-;16168:2;16163:3;16159:12;16152:19;;15811:366;;;:::o;16183:419::-;16349:4;16387:2;16376:9;16372:18;16364:26;;16436:9;16430:4;16426:20;16422:1;16411:9;16407:17;16400:47;16464:131;16590:4;16464:131;:::i;:::-;16456:139;;16183:419;;;:::o;16608:177::-;16748:29;16744:1;16736:6;16732:14;16725:53;16608:177;:::o;16791:366::-;16933:3;16954:67;17018:2;17013:3;16954:67;:::i;:::-;16947:74;;17030:93;17119:3;17030:93;:::i;:::-;17148:2;17143:3;17139:12;17132:19;;16791:366;;;:::o;17163:419::-;17329:4;17367:2;17356:9;17352:18;17344:26;;17416:9;17410:4;17406:20;17402:1;17391:9;17387:17;17380:47;17444:131;17570:4;17444:131;:::i;:::-;17436:139;;17163:419;;;:::o;17588:223::-;17728:34;17724:1;17716:6;17712:14;17705:58;17797:6;17792:2;17784:6;17780:15;17773:31;17588:223;:::o;17817:366::-;17959:3;17980:67;18044:2;18039:3;17980:67;:::i;:::-;17973:74;;18056:93;18145:3;18056:93;:::i;:::-;18174:2;18169:3;18165:12;18158:19;;17817:366;;;:::o;18189:419::-;18355:4;18393:2;18382:9;18378:18;18370:26;;18442:9;18436:4;18432:20;18428:1;18417:9;18413:17;18406:47;18470:131;18596:4;18470:131;:::i;:::-;18462:139;;18189:419;;;:::o;18614:221::-;18754:34;18750:1;18742:6;18738:14;18731:58;18823:4;18818:2;18810:6;18806:15;18799:29;18614:221;:::o;18841:366::-;18983:3;19004:67;19068:2;19063:3;19004:67;:::i;:::-;18997:74;;19080:93;19169:3;19080:93;:::i;:::-;19198:2;19193:3;19189:12;19182:19;;18841:366;;;:::o;19213:419::-;19379:4;19417:2;19406:9;19402:18;19394:26;;19466:9;19460:4;19456:20;19452:1;19441:9;19437:17;19430:47;19494:131;19620:4;19494:131;:::i;:::-;19486:139;;19213:419;;;:::o;19638:224::-;19778:34;19774:1;19766:6;19762:14;19755:58;19847:7;19842:2;19834:6;19830:15;19823:32;19638:224;:::o;19868:366::-;20010:3;20031:67;20095:2;20090:3;20031:67;:::i;:::-;20024:74;;20107:93;20196:3;20107:93;:::i;:::-;20225:2;20220:3;20216:12;20209:19;;19868:366;;;:::o;20240:419::-;20406:4;20444:2;20433:9;20429:18;20421:26;;20493:9;20487:4;20483:20;20479:1;20468:9;20464:17;20457:47;20521:131;20647:4;20521:131;:::i;:::-;20513:139;;20240:419;;;:::o;20665:222::-;20805:34;20801:1;20793:6;20789:14;20782:58;20874:5;20869:2;20861:6;20857:15;20850:30;20665:222;:::o;20893:366::-;21035:3;21056:67;21120:2;21115:3;21056:67;:::i;:::-;21049:74;;21132:93;21221:3;21132:93;:::i;:::-;21250:2;21245:3;21241:12;21234:19;;20893:366;;;:::o;21265:419::-;21431:4;21469:2;21458:9;21454:18;21446:26;;21518:9;21512:4;21508:20;21504:1;21493:9;21489:17;21482:47;21546:131;21672:4;21546:131;:::i;:::-;21538:139;;21265:419;;;:::o;21690:228::-;21830:34;21826:1;21818:6;21814:14;21807:58;21899:11;21894:2;21886:6;21882:15;21875:36;21690:228;:::o;21924:366::-;22066:3;22087:67;22151:2;22146:3;22087:67;:::i;:::-;22080:74;;22163:93;22252:3;22163:93;:::i;:::-;22281:2;22276:3;22272:12;22265:19;;21924:366;;;:::o;22296:419::-;22462:4;22500:2;22489:9;22485:18;22477:26;;22549:9;22543:4;22539:20;22535:1;22524:9;22520:17;22513:47;22577:131;22703:4;22577:131;:::i;:::-;22569:139;;22296:419;;;:::o;22721:172::-;22861:24;22857:1;22849:6;22845:14;22838:48;22721:172;:::o;22899:366::-;23041:3;23062:67;23126:2;23121:3;23062:67;:::i;:::-;23055:74;;23138:93;23227:3;23138:93;:::i;:::-;23256:2;23251:3;23247:12;23240:19;;22899:366;;;:::o;23271:419::-;23437:4;23475:2;23464:9;23460:18;23452:26;;23524:9;23518:4;23514:20;23510:1;23499:9;23495:17;23488:47;23552:131;23678:4;23552:131;:::i;:::-;23544:139;;23271:419;;;:::o;23696:297::-;23836:34;23832:1;23824:6;23820:14;23813:58;23905:34;23900:2;23892:6;23888:15;23881:59;23974:11;23969:2;23961:6;23957:15;23950:36;23696:297;:::o;23999:366::-;24141:3;24162:67;24226:2;24221:3;24162:67;:::i;:::-;24155:74;;24238:93;24327:3;24238:93;:::i;:::-;24356:2;24351:3;24347:12;24340:19;;23999:366;;;:::o;24371:419::-;24537:4;24575:2;24564:9;24560:18;24552:26;;24624:9;24618:4;24614:20;24610:1;24599:9;24595:17;24588:47;24652:131;24778:4;24652:131;:::i;:::-;24644:139;;24371:419;;;:::o;24796:240::-;24936:34;24932:1;24924:6;24920:14;24913:58;25005:23;25000:2;24992:6;24988:15;24981:48;24796:240;:::o;25042:366::-;25184:3;25205:67;25269:2;25264:3;25205:67;:::i;:::-;25198:74;;25281:93;25370:3;25281:93;:::i;:::-;25399:2;25394:3;25390:12;25383:19;;25042:366;;;:::o;25414:419::-;25580:4;25618:2;25607:9;25603:18;25595:26;;25667:9;25661:4;25657:20;25653:1;25642:9;25638:17;25631:47;25695:131;25821:4;25695:131;:::i;:::-;25687:139;;25414:419;;;:::o;25839:236::-;25979:34;25975:1;25967:6;25963:14;25956:58;26048:19;26043:2;26035:6;26031:15;26024:44;25839:236;:::o;26081:366::-;26223:3;26244:67;26308:2;26303:3;26244:67;:::i;:::-;26237:74;;26320:93;26409:3;26320:93;:::i;:::-;26438:2;26433:3;26429:12;26422:19;;26081:366;;;:::o;26453:419::-;26619:4;26657:2;26646:9;26642:18;26634:26;;26706:9;26700:4;26696:20;26692:1;26681:9;26677:17;26670:47;26734:131;26860:4;26734:131;:::i;:::-;26726:139;;26453:419;;;:::o;26878:169::-;27018:21;27014:1;27006:6;27002:14;26995:45;26878:169;:::o;27053:366::-;27195:3;27216:67;27280:2;27275:3;27216:67;:::i;:::-;27209:74;;27292:93;27381:3;27292:93;:::i;:::-;27410:2;27405:3;27401:12;27394:19;;27053:366;;;:::o;27425:419::-;27591:4;27629:2;27618:9;27614:18;27606:26;;27678:9;27672:4;27668:20;27664:1;27653:9;27649:17;27642:47;27706:131;27832:4;27706:131;:::i;:::-;27698:139;;27425:419;;;:::o;27850:191::-;27890:4;27910:20;27928:1;27910:20;:::i;:::-;27905:25;;27944:20;27962:1;27944:20;:::i;:::-;27939:25;;27983:1;27980;27977:8;27974:34;;;27988:18;;:::i;:::-;27974:34;28033:1;28030;28026:9;28018:17;;27850:191;;;;:::o;28047:229::-;28187:34;28183:1;28175:6;28171:14;28164:58;28256:12;28251:2;28243:6;28239:15;28232:37;28047:229;:::o;28282:366::-;28424:3;28445:67;28509:2;28504:3;28445:67;:::i;:::-;28438:74;;28521:93;28610:3;28521:93;:::i;:::-;28639:2;28634:3;28630:12;28623:19;;28282:366;;;:::o;28654:419::-;28820:4;28858:2;28847:9;28843:18;28835:26;;28907:9;28901:4;28897:20;28893:1;28882:9;28878:17;28871:47;28935:131;29061:4;28935:131;:::i;:::-;28927:139;;28654:419;;;:::o;29079:147::-;29180:11;29217:3;29202:18;;29079:147;;;;:::o;29232:114::-;;:::o;29352:398::-;29511:3;29532:83;29613:1;29608:3;29532:83;:::i;:::-;29525:90;;29624:93;29713:3;29624:93;:::i;:::-;29742:1;29737:3;29733:11;29726:18;;29352:398;;;:::o;29756:379::-;29940:3;29962:147;30105:3;29962:147;:::i;:::-;29955:154;;30126:3;30119:10;;29756:379;;;:::o;30141:220::-;30281:34;30277:1;30269:6;30265:14;30258:58;30350:3;30345:2;30337:6;30333:15;30326:28;30141:220;:::o;30367:366::-;30509:3;30530:67;30594:2;30589:3;30530:67;:::i;:::-;30523:74;;30606:93;30695:3;30606:93;:::i;:::-;30724:2;30719:3;30715:12;30708:19;;30367:366;;;:::o;30739:419::-;30905:4;30943:2;30932:9;30928:18;30920:26;;30992:9;30986:4;30982:20;30978:1;30967:9;30963:17;30956:47;31020:131;31146:4;31020:131;:::i;:::-;31012:139;;30739:419;;;:::o;31164:180::-;31212:77;31209:1;31202:88;31309:4;31306:1;31299:15;31333:4;31330:1;31323:15;31350:180;31398:77;31395:1;31388:88;31495:4;31492:1;31485:15;31519:4;31516:1;31509:15;31536:143;31593:5;31624:6;31618:13;31609:22;;31640:33;31667:5;31640:33;:::i;:::-;31536:143;;;;:::o;31685:351::-;31755:6;31804:2;31792:9;31783:7;31779:23;31775:32;31772:119;;;31810:79;;:::i;:::-;31772:119;31930:1;31955:64;32011:7;32002:6;31991:9;31987:22;31955:64;:::i;:::-;31945:74;;31901:128;31685:351;;;;:::o;32042:85::-;32087:7;32116:5;32105:16;;32042:85;;;:::o;32133:158::-;32191:9;32224:61;32242:42;32251:32;32277:5;32251:32;:::i;:::-;32242:42;:::i;:::-;32224:61;:::i;:::-;32211:74;;32133:158;;;:::o;32297:147::-;32392:45;32431:5;32392:45;:::i;:::-;32387:3;32380:58;32297:147;;:::o;32450:114::-;32517:6;32551:5;32545:12;32535:22;;32450:114;;;:::o;32570:184::-;32669:11;32703:6;32698:3;32691:19;32743:4;32738:3;32734:14;32719:29;;32570:184;;;;:::o;32760:132::-;32827:4;32850:3;32842:11;;32880:4;32875:3;32871:14;32863:22;;32760:132;;;:::o;32898:108::-;32975:24;32993:5;32975:24;:::i;:::-;32970:3;32963:37;32898:108;;:::o;33012:179::-;33081:10;33102:46;33144:3;33136:6;33102:46;:::i;:::-;33180:4;33175:3;33171:14;33157:28;;33012:179;;;;:::o;33197:113::-;33267:4;33299;33294:3;33290:14;33282:22;;33197:113;;;:::o;33346:732::-;33465:3;33494:54;33542:5;33494:54;:::i;:::-;33564:86;33643:6;33638:3;33564:86;:::i;:::-;33557:93;;33674:56;33724:5;33674:56;:::i;:::-;33753:7;33784:1;33769:284;33794:6;33791:1;33788:13;33769:284;;;33870:6;33864:13;33897:63;33956:3;33941:13;33897:63;:::i;:::-;33890:70;;33983:60;34036:6;33983:60;:::i;:::-;33973:70;;33829:224;33816:1;33813;33809:9;33804:14;;33769:284;;;33773:14;34069:3;34062:10;;33470:608;;;33346:732;;;;:::o;34084:831::-;34347:4;34385:3;34374:9;34370:19;34362:27;;34399:71;34467:1;34456:9;34452:17;34443:6;34399:71;:::i;:::-;34480:80;34556:2;34545:9;34541:18;34532:6;34480:80;:::i;:::-;34607:9;34601:4;34597:20;34592:2;34581:9;34577:18;34570:48;34635:108;34738:4;34729:6;34635:108;:::i;:::-;34627:116;;34753:72;34821:2;34810:9;34806:18;34797:6;34753:72;:::i;:::-;34835:73;34903:3;34892:9;34888:19;34879:6;34835:73;:::i;:::-;34084:831;;;;;;;;:::o
Swarm Source
ipfs://4985baa705ee34d666bc1e15095daae47833fcdaf476c710be1ecc9402759141
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.