Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
99,902,568,000.586675855 Tachiba Inu
Holders
90
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 9 Decimals)
Balance
95,085,830.18367842 Tachiba InuValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
Tachiba
Compiler Version
v0.8.14+commit.80d49f37
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-01-09 */ pragma solidity ^0.8.14; // SPDX-License-Identifier: Unlicensed interface IERC20 { function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * 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 of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address 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}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); } /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ 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 * `revert` 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 * `revert` 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 a `revert` * 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 a `revert` * 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; } } abstract contract Context { function _msgSender() internal view virtual returns (address payable) { return payable(msg.sender); } function _msgData() internal view virtual returns (bytes memory) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } /** * @dev Collection of functions related to the address type */ library Address { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned // for accounts without code, i.e. `keccak256('')` bytes32 codehash; bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470; // solhint-disable-next-line no-inline-assembly assembly { codehash := extcodehash(account) } return (codehash != accountHash && codehash != 0x0); } /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } /** * @dev Performs a Solidity function call using a low level `call`. A * plain`call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason, it is bubbled up by this * function (like regular Solidity function calls). * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with * `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return _functionCallWithValue(target, data, 0, errorMessage); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } /** * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but * with `errorMessage` as a fallback revert reason when `target` reverts. * * _Available since v3.1._ */ function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); return _functionCallWithValue(target, data, value, errorMessage); } function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ contract Ownable is Context { address private _owner; address private _previousOwner; uint256 private _lockTime; 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; } } // pragma solidity >=0.5.0; interface IUniswapV2Factory { event PairCreated(address indexed token0, address indexed token1, address pair, uint); function feeTo() external view returns (address); function feeToSetter() external view returns (address); function getPair(address tokenA, address tokenB) external view returns (address pair); function allPairs(uint) external view returns (address pair); function allPairsLength() external view returns (uint); function createPair(address tokenA, address tokenB) external returns (address pair); function setFeeTo(address) external; function setFeeToSetter(address) external; } // pragma solidity >=0.5.0; interface IUniswapV2Pair { event Approval(address indexed owner, address indexed spender, uint value); event Transfer(address indexed from, address indexed to, uint value); function name() external pure returns (string memory); function symbol() external pure returns (string memory); function decimals() external pure returns (uint8); function totalSupply() external view returns (uint); function balanceOf(address owner) external view returns (uint); function allowance(address owner, address spender) external view returns (uint); function approve(address spender, uint value) external returns (bool); function transfer(address to, uint value) external returns (bool); function transferFrom(address from, address to, uint value) external returns (bool); function DOMAIN_SEPARATOR() external view returns (bytes32); function PERMIT_TYPEHASH() external pure returns (bytes32); function nonces(address owner) external view returns (uint); function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external; event Mint(address indexed sender, uint amount0, uint amount1); event Burn(address indexed sender, uint amount0, uint amount1, address indexed to); event Swap( address indexed sender, uint amount0In, uint amount1In, uint amount0Out, uint amount1Out, address indexed to ); event Sync(uint112 reserve0, uint112 reserve1); function MINIMUM_LIQUIDITY() external pure returns (uint); function factory() external view returns (address); function token0() external view returns (address); function token1() external view returns (address); function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast); function price0CumulativeLast() external view returns (uint); function price1CumulativeLast() external view returns (uint); function kLast() external view returns (uint); function mint(address to) external returns (uint liquidity); function burn(address to) external returns (uint amount0, uint amount1); function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external; function skim(address to) external; function sync() external; function initialize(address, address) external; } // pragma solidity >=0.6.2; interface IUniswapV2Router01 { function factory() external pure returns (address); function WETH() external pure returns (address); function addLiquidity( address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB, uint liquidity); function addLiquidityETH( address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external payable returns (uint amountToken, uint amountETH, uint liquidity); function removeLiquidity( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline ) external returns (uint amountA, uint amountB); function removeLiquidityETH( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountToken, uint amountETH); function removeLiquidityWithPermit( address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountA, uint amountB); function removeLiquidityETHWithPermit( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountToken, uint amountETH); function swapExactTokensForTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapTokensForExactTokens( uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline ) external returns (uint[] memory amounts); function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts); function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts); function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB); function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut); function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn); function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts); function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts); } // pragma solidity >=0.6.2; interface IUniswapV2Router02 is IUniswapV2Router01 { function removeLiquidityETHSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline ) external returns (uint amountETH); function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens( address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s ) external returns (uint amountETH); function swapExactTokensForTokensSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; function swapExactETHForTokensSupportingFeeOnTransferTokens( uint amountOutMin, address[] calldata path, address to, uint deadline ) external payable; function swapExactTokensForETHSupportingFeeOnTransferTokens( uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline ) external; } contract Tachiba is Context, IERC20, Ownable { using SafeMath for uint256; using Address for address; struct RValuesStruct { uint256 rAmount; uint256 rTransferAmount; uint256 rReflectionFee; uint256 rBurnFee; uint256 rmarketingTokenFee; uint256 rMarketingETHFee; } struct TValuesStruct { uint256 tTransferAmount; uint256 tReflectionFee; uint256 tBurnFee; uint256 tmarketingTokenFee; uint256 tMarketingETHFee; } struct ValuesStruct { uint256 rAmount; uint256 rTransferAmount; uint256 rReflectionFee; uint256 rBurnFee; uint256 rmarketingTokenFee; uint256 rMarketingETHFee; uint256 tTransferAmount; uint256 tReflectionFee; uint256 tBurnFee; uint256 tmarketingTokenFee; uint256 tMarketingETHFee; } mapping (address => uint256) private _rOwned; mapping (address => uint256) private _tOwned; mapping (address => mapping (address => uint256)) private _allowances; mapping (address => bool) private _isExcludedFromFee; mapping (address => bool) private _isExcluded; address[] private _excluded; uint256 private constant MAX = ~uint256(0); uint256 private _tTotal = 100 * 10**9 * 10**9; uint256 private _rTotal = (MAX - (MAX % _tTotal)); uint256 private _tReflectionFeeTotal; uint256 private _tBurnFeeTotal; string private _name = "Tachiba Inu"; string private _symbol = "Tachiba Inu"; uint8 private _decimals = 9; uint256 public _reflectionFee = 1; uint256 public _burnFee = 1; uint256 public _marketingTokenFee = 1; uint256 public _marketingETHFee = 1; address public marketingTokenFeeWallet = 0x3b2243F8D16cAe171d77d4a0b7b72Ae146587636; address public marketingETHFeeWallet = 0x3b2243F8D16cAe171d77d4a0b7b72Ae146587636; IUniswapV2Router02 public immutable uniswapV2Router; address public immutable uniswapV2Pair; bool inMarketingEthSwap = false; bool public _marketingConverttoETH = true; bool public _tradingEnabled = false; uint256 public _maxTxAmount = 100 * 10**6 * 10**9; uint256 private _numTokensSwapToETHForMarketing = 40 * 10**6 * 10**9; event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap); modifier lockTheSwap { inMarketingEthSwap = true; _; inMarketingEthSwap = false; } constructor () { _rOwned[_msgSender()] = _rTotal; IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); // Uniswap V2 // Create a uniswap pair for this new token uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()) .createPair(address(this), _uniswapV2Router.WETH()); // set the rest of the contract variables uniswapV2Router = _uniswapV2Router; //exclude owner and this contract from fee _isExcludedFromFee[owner()] = true; _isExcludedFromFee[address(this)] = true; emit Transfer(address(0), _msgSender(), _tTotal); } function name() public view returns (string memory) { return _name; } function symbol() public view returns (string memory) { return _symbol; } function decimals() public view returns (uint8) { return _decimals; } function totalSupply() public view override returns (uint256) { return _tTotal; } function balanceOf(address account) public view override returns (uint256) { if (_isExcluded[account]) return _tOwned[account]; return tokenFromReflection(_rOwned[account]); } function transfer(address recipient, uint256 amount) public override returns (bool) { _transfer(_msgSender(), recipient, amount); return true; } function allowance(address owner, address spender) public view override returns (uint256) { return _allowances[owner][spender]; } function approve(address spender, uint256 amount) public override returns (bool) { _approve(_msgSender(), spender, amount); return true; } function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) { _transfer(sender, recipient, amount); _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance")); return true; } function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { _approve(_msgSender(), spender, _allowances[_msgSender()][spender].add(addedValue)); return true; } 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; } function isExcludedFromReward(address account) public view returns (bool) { return _isExcluded[account]; } function totalReflectionFees() public view returns (uint256) { return _tReflectionFeeTotal; } function totalBurnFees() public view returns (uint256) { return _tBurnFeeTotal; } /** * @dev Returns the Number of tokens in contract that are needed to be reached before swapping to ETH and sending to Marketing Wallet. . */ function numTokensSwapToETHForMarketing() public view returns (uint256) { return _numTokensSwapToETHForMarketing; } function reflectionFromToken(uint256 tAmount, bool deductTransferFee) public view returns(uint256) { require(tAmount <= _tTotal, "Amount must be less than supply"); if (!deductTransferFee) { uint256 rAmount = _getValues(tAmount).rAmount; return rAmount; } else { uint256 rTransferAmount = _getValues(tAmount).rTransferAmount; return rTransferAmount; } } function tokenFromReflection(uint256 rAmount) public view returns(uint256) { require(rAmount <= _rTotal, "Amount must be less than total reflections"); uint256 currentRate = _getRate(); return rAmount.div(currentRate); } function excludeFromReward(address account) public onlyOwner() { require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Uniswap router.'); require(!_isExcluded[account], "Account already excluded"); require(_excluded.length < 100, "Excluded list is too long"); if(_rOwned[account] > 0) { _tOwned[account] = tokenFromReflection(_rOwned[account]); } _isExcluded[account] = true; _excluded.push(account); } //to recieve ETH from uniswapV2Router when swaping receive() external payable {} function _distributeFee(uint256 rReflectionFee, uint256 rBurnFee, uint256 rmarketingTokenFee, uint256 tReflectionFee, uint256 tBurnFee, uint256 tmarketingTokenFee) private { _rTotal = _rTotal.sub(rReflectionFee).sub(rBurnFee); _tReflectionFeeTotal = _tReflectionFeeTotal.add(tReflectionFee); _tTotal = _tTotal.sub(tBurnFee); _tBurnFeeTotal = _tBurnFeeTotal.add(tBurnFee); _rOwned[marketingTokenFeeWallet] = _rOwned[marketingTokenFeeWallet].add(rmarketingTokenFee); if (_isExcluded[marketingTokenFeeWallet]) { _tOwned[marketingTokenFeeWallet] = _tOwned[marketingTokenFeeWallet].add(tmarketingTokenFee); } } function _getValues(uint256 tAmount) private view returns (ValuesStruct memory) { TValuesStruct memory tvs = _getTValues(tAmount); RValuesStruct memory rvs = _getRValues(tAmount, tvs.tReflectionFee, tvs.tBurnFee, tvs.tmarketingTokenFee, tvs.tMarketingETHFee, _getRate()); return ValuesStruct( rvs.rAmount, rvs.rTransferAmount, rvs.rReflectionFee, rvs.rBurnFee, rvs.rmarketingTokenFee, rvs.rMarketingETHFee, tvs.tTransferAmount, tvs.tReflectionFee, tvs.tBurnFee, tvs.tmarketingTokenFee, tvs.tMarketingETHFee ); } function _getTValues(uint256 tAmount) private view returns (TValuesStruct memory) { uint256 tReflectionFee = calculateReflectionFee(tAmount); uint256 tBurnFee = calculateBurnFee(tAmount); uint256 tmarketingTokenFee = calculatemarketingTokenFee(tAmount); uint256 tMarketingETHFee = calculateMarketingETHFee(tAmount); uint256 tTransferAmount = tAmount.sub(tReflectionFee).sub(tBurnFee).sub(tmarketingTokenFee).sub(tMarketingETHFee); return TValuesStruct(tTransferAmount, tReflectionFee, tBurnFee, tmarketingTokenFee, tMarketingETHFee); } function _getRValues(uint256 tAmount, uint256 tReflectionFee, uint256 tBurnFee, uint256 tmarketingTokenFee, uint256 tMarketingETHFee, uint256 currentRate) private pure returns (RValuesStruct memory) { uint256 rAmount = tAmount.mul(currentRate); uint256 rReflectionFee = tReflectionFee.mul(currentRate); uint256 rBurnFee = tBurnFee.mul(currentRate); uint256 rmarketingTokenFee = tmarketingTokenFee.mul(currentRate); uint256 rMarketingETHFee = tMarketingETHFee.mul(currentRate); uint256 rTransferAmount = rAmount.sub(rReflectionFee).sub(rMarketingETHFee).sub(rBurnFee).sub(rmarketingTokenFee); return RValuesStruct(rAmount, rTransferAmount, rReflectionFee, rBurnFee, rmarketingTokenFee, rMarketingETHFee); } 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; for (uint256 i = 0; i < _excluded.length; i++) { if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal); rSupply = rSupply.sub(_rOwned[_excluded[i]]); tSupply = tSupply.sub(_tOwned[_excluded[i]]); } if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal); return (rSupply, tSupply); } function _takeMarketingETHFee(uint256 rMarketingETHFee, uint256 tMarketingETHFee) private { _rOwned[address(this)] = _rOwned[address(this)].add(rMarketingETHFee); if(_isExcluded[address(this)]) _tOwned[address(this)] = _tOwned[address(this)].add(tMarketingETHFee); } function calculateReflectionFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_reflectionFee).div( 10**2 ); } function calculateBurnFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_burnFee).div( 10**2 ); } function calculatemarketingTokenFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_marketingTokenFee).div( 10**2 ); } function calculateMarketingETHFee(uint256 _amount) private view returns (uint256) { return _amount.mul(_marketingETHFee).div( 10**2 ); } function removeAllFee() private { _reflectionFee = 0; _marketingETHFee = 0; _burnFee = 0; _marketingTokenFee = 0; } function restoreAllFee() private { _reflectionFee = 1; _marketingETHFee = 1; _marketingTokenFee = 1; _burnFee = 1; } function isExcludedFromFee(address account) public view returns(bool) { return _isExcludedFromFee[account]; } function _approve(address owner, address spender, uint256 amount) private { 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); } function _transfer( address from, address to, uint256 amount ) private { 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"); // block trading until owner has added liquidity and enabled trading if(!_tradingEnabled && from != owner()) { revert("Trading not yet enabled!"); } // is the token balance of this contract address over the min number of // tokens that we need to initiate a swaptoEth lock? // also, don't get caught in a circular liquidity event. // also, don't SwapMarketingAndSendETH if sender is uniswap pair. uint256 contractTokenBalance = balanceOf(address(this)); bool overMinTokenBalance = contractTokenBalance >= _numTokensSwapToETHForMarketing; if ( overMinTokenBalance && !inMarketingEthSwap && from != uniswapV2Pair && _marketingConverttoETH ) { contractTokenBalance = _numTokensSwapToETHForMarketing; //Perform a Swap of Token for ETH Portion of Marketing Fees swapMarketingAndSendEth(contractTokenBalance); } //transfer amount, it will take tax, burn, liquidity fee _tokenTransfer(from,to,amount); } function swapMarketingAndSendEth(uint256 tokenAmount) private lockTheSwap { // 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, marketingETHFeeWallet, block.timestamp ); } //this method is responsible for taking all fee, if takeFee is true function _tokenTransfer(address sender, address recipient, uint256 amount) private { if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]){ removeAllFee(); } else{ require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount."); } ValuesStruct memory vs = _getValues(amount); _takeMarketingETHFee(vs.rMarketingETHFee, vs.tMarketingETHFee); _distributeFee(vs.rReflectionFee, vs.rBurnFee, vs.rmarketingTokenFee, vs.tReflectionFee, vs.tBurnFee, vs.tmarketingTokenFee); if (_isExcluded[sender] && !_isExcluded[recipient]) { _transferFromExcluded(sender, recipient, amount, vs); } else if (!_isExcluded[sender] && _isExcluded[recipient]) { _transferToExcluded(sender, recipient, vs); } else if (!_isExcluded[sender] && !_isExcluded[recipient]) { _transferStandard(sender, recipient, vs); } else if (_isExcluded[sender] && _isExcluded[recipient]) { _transferBothExcluded(sender, recipient, amount, vs); } if(_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) restoreAllFee(); } function _transferStandard(address sender, address recipient, ValuesStruct memory vs) private { _rOwned[sender] = _rOwned[sender].sub(vs.rAmount); _rOwned[recipient] = _rOwned[recipient].add(vs.rTransferAmount); emit Transfer(sender, recipient, vs.tTransferAmount); } function _transferToExcluded(address sender, address recipient, ValuesStruct memory vs) private { _rOwned[sender] = _rOwned[sender].sub(vs.rAmount); _tOwned[recipient] = _tOwned[recipient].add(vs.tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(vs.rTransferAmount); emit Transfer(sender, recipient, vs.tTransferAmount); } function _transferFromExcluded(address sender, address recipient, uint256 tAmount, ValuesStruct memory vs) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(vs.rAmount); _rOwned[recipient] = _rOwned[recipient].add(vs.rTransferAmount); emit Transfer(sender, recipient, vs.tTransferAmount); } function _transferBothExcluded(address sender, address recipient, uint256 tAmount, ValuesStruct memory vs) private { _tOwned[sender] = _tOwned[sender].sub(tAmount); _rOwned[sender] = _rOwned[sender].sub(vs.rAmount); _tOwned[recipient] = _tOwned[recipient].add(vs.tTransferAmount); _rOwned[recipient] = _rOwned[recipient].add(vs.rTransferAmount); emit Transfer(sender, recipient, vs.tTransferAmount); } function excludeFromFee(address account) public onlyOwner { _isExcludedFromFee[account] = true; } function includeInFee(address account) public onlyOwner { _isExcludedFromFee[account] = false; } function enableAllFees() external onlyOwner() { _reflectionFee = 1; _burnFee = 1; _marketingTokenFee = 1; _marketingETHFee = 1; _marketingConverttoETH = true; } function disableAllFees() external onlyOwner() { _reflectionFee = 0; _burnFee = 0; _marketingTokenFee = 0; _marketingETHFee = 0; _marketingConverttoETH = false; } function setMarketingETHWallet(address newWallet) external onlyOwner() { marketingETHFeeWallet = newWallet; } function setMarketingTokenWallet(address newWallet) external onlyOwner() { marketingTokenFeeWallet = newWallet; } function setMaxTxAmount(uint256 maxAmountInTokensWithDecimals) external onlyOwner() { require(maxAmountInTokensWithDecimals > 100 * 10**6 * 10**9, "Cannot set transaction amount less than 0.1 percent of initial Total Supply!"); _maxTxAmount = maxAmountInTokensWithDecimals; } function enableTrading() public onlyOwner { require(!_tradingEnabled, "Trading already enabled!"); _tradingEnabled = true; } function setmarketingConverttoETH(bool _enabled) public onlyOwner { _marketingConverttoETH = _enabled; } // Number of Tokens to Accrue before Selling To Add to Marketing function setnumTokensSwapToETHForMarketing(uint256 tokenAmount) external onlyOwner() { _numTokensSwapToETHForMarketing = tokenAmount; } /** * @dev Function to recover any ETH sent to Contract by Mistake. */ function recoverETHFromContract(uint256 weiAmount) external onlyOwner{ require(address(this).balance >= weiAmount, "insufficient ETH balance"); payable(owner()).transfer(weiAmount); } /** * @dev Function to recover any ERC20 Tokens sent to Contract by Mistake. */ function recoverAnyERC20TokensFromContract(address _tokenAddr, address _to, uint _amount) public onlyOwner { IERC20(_tokenAddr).transfer(_to, _amount); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":"_burnFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingConverttoETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingETHFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_marketingTokenFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_tradingEnabled","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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableAllFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingETHFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTokenFeeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSwapToETHForMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"recoverAnyERC20TokensFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"recoverETHFromContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingETHWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingTokenWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxAmountInTokensWithDecimals","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setmarketingConverttoETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"setnumTokensSwapToETHForMarketing","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalBurnFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflectionFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"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"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60c060405268056bc75e2d6310000060095560095460001962000023919062000763565b600019620000329190620007ca565b600a556040518060400160405280600b81526020017f5461636869626120496e75000000000000000000000000000000000000000000815250600d9080519060200190620000829291906200067a565b506040518060400160405280600b81526020017f5461636869626120496e75000000000000000000000000000000000000000000815250600e9080519060200190620000d09291906200067a565b506009600f60006101000a81548160ff021916908360ff1602179055506001601055600160115560016012556001601355733b2243f8d16cae171d77d4a0b7b72ae146587636601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733b2243f8d16cae171d77d4a0b7b72ae146587636601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601560146101000a81548160ff02191690831515021790555060016015806101000a81548160ff0219169083151502179055506000601560166101000a81548160ff02191690831515021790555067016345785d8a0000601655668e1bc9bf0400006017553480156200021f57600080fd5b506000620002326200064960201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600a5460036000620002e76200064960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200038a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b091906200086f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000418573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200043e91906200086f565b6040518363ffffffff1660e01b81526004016200045d929190620008b2565b6020604051808303816000875af11580156200047d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004a391906200086f565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160066000620005206200065160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620005d96200064960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009546040516200063a9190620008f0565b60405180910390a35062000971565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b82805462000688906200093c565b90600052602060002090601f016020900481019282620006ac5760008555620006f8565b82601f10620006c757805160ff1916838001178555620006f8565b82800160010185558215620006f8579182015b82811115620006f7578251825591602001919060010190620006da565b5b5090506200070791906200070b565b5090565b5b80821115620007265760008160009055506001016200070c565b5090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000770826200072a565b91506200077d836200072a565b92508262000790576200078f62000734565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007d7826200072a565b9150620007e4836200072a565b925082821015620007fa57620007f96200079b565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000837826200080a565b9050919050565b62000849816200082a565b81146200085557600080fd5b50565b60008151905062000869816200083e565b92915050565b60006020828403121562000888576200088762000805565b5b6000620008988482850162000858565b91505092915050565b620008ac816200082a565b82525050565b6000604082019050620008c96000830185620008a1565b620008d86020830184620008a1565b9392505050565b620008ea816200072a565b82525050565b6000602082019050620009076000830184620008df565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200095557607f821691505b6020821081036200096b576200096a6200090d565b5b50919050565b60805160a0516158ef620009b3600039600081816110130152612775015260008181610b6f01528181612ab001528181612b910152612bb801526158ef6000f3fe6080604052600436106102765760003560e01c8063741af87f1161014f578063adbede72116100c1578063ea2f0b371161007a578063ea2f0b371461098b578063ec0c9d4d146109b4578063ec28438a146109dd578063f2fde38b14610a06578063f709594514610a2f578063ffc7863514610a5a5761027d565b8063adbede721461087b578063b8d36b50146108a6578063c0b0fda2146108cf578063c5254f40146108fa578063c730b8a414610923578063dd62ed3e1461094e5761027d565b80638c8f8c04116101135780638c8f8c04146107595780638da5cb5b146107825780638ff67c36146107ad57806395d89b41146107d6578063a457c2d714610801578063a9059cbb1461083e5761027d565b8063741af87f1461069857806376b851ca146106af5780637d1db4a5146106da57806388f82020146107055780638a8c523c146107425761027d565b806338780fe6116101e857806349bd5a5e116101ac57806349bd5a5e1461058857806352390c02146105b35780635342acb4146105dc57806370a082311461061957806370c668c814610656578063715018a6146106815761027d565b806338780fe61461049157806338e2f22f146104ba57806339509351146104e5578063437823ec146105225780634549b0391461054b5761027d565b806318160ddd1161023a57806318160ddd1461036b57806323b872dd146103965780632d838119146103d3578063313ce56714610410578063317653e01461043b5780633206b4aa146104665761027d565b806301ba031f1461028257806306486014146102ad57806306fdde03146102d8578063095ea7b3146103035780631694505e146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a71565b6040516102a49190614613565b60405180910390f35b3480156102b957600080fd5b506102c2610a97565b6040516102cf9190614613565b60405180910390f35b3480156102e457600080fd5b506102ed610abd565b6040516102fa91906146c7565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190614750565b610b4f565b60405161033791906147ab565b60405180910390f35b34801561034c57600080fd5b50610355610b6d565b6040516103629190614825565b60405180910390f35b34801561037757600080fd5b50610380610b91565b60405161038d919061484f565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b8919061486a565b610b9b565b6040516103ca91906147ab565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906148bd565b610c74565b604051610407919061484f565b60405180910390f35b34801561041c57600080fd5b50610425610ce2565b6040516104329190614906565b60405180910390f35b34801561044757600080fd5b50610450610cf9565b60405161045d919061484f565b60405180910390f35b34801561047257600080fd5b5061047b610d03565b604051610488919061484f565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190614921565b610d09565b005b3480156104c657600080fd5b506104cf610de2565b6040516104dc919061484f565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190614750565b610dec565b60405161051991906147ab565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190614921565b610e9f565b005b34801561055757600080fd5b50610572600480360381019061056d919061497a565b610f8f565b60405161057f919061484f565b60405180910390f35b34801561059457600080fd5b5061059d611011565b6040516105aa9190614613565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190614921565b611035565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190614921565b6113b3565b60405161061091906147ab565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190614921565b611409565b60405161064d919061484f565b60405180910390f35b34801561066257600080fd5b5061066b6114f4565b604051610678919061484f565b60405180910390f35b34801561068d57600080fd5b506106966114fa565b005b3480156106a457600080fd5b506106ad61164d565b005b3480156106bb57600080fd5b506106c461171e565b6040516106d191906147ab565b60405180910390f35b3480156106e657600080fd5b506106ef61172f565b6040516106fc919061484f565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190614921565b611735565b60405161073991906147ab565b60405180910390f35b34801561074e57600080fd5b5061075761178b565b005b34801561076557600080fd5b50610780600480360381019061077b919061486a565b61188d565b005b34801561078e57600080fd5b506107976119a6565b6040516107a49190614613565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf91906149ba565b6119cf565b005b3480156107e257600080fd5b506107eb611a80565b6040516107f891906146c7565b60405180910390f35b34801561080d57600080fd5b5061082860048036038101906108239190614750565b611b12565b60405161083591906147ab565b60405180910390f35b34801561084a57600080fd5b5061086560048036038101906108609190614750565b611bdf565b60405161087291906147ab565b60405180910390f35b34801561088757600080fd5b50610890611bfd565b60405161089d919061484f565b60405180910390f35b3480156108b257600080fd5b506108cd60048036038101906108c891906148bd565b611c07565b005b3480156108db57600080fd5b506108e4611d30565b6040516108f1919061484f565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190614921565b611d36565b005b34801561092f57600080fd5b50610938611e0f565b604051610945919061484f565b60405180910390f35b34801561095a57600080fd5b50610975600480360381019061097091906149e7565b611e15565b604051610982919061484f565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190614921565b611e9c565b005b3480156109c057600080fd5b506109db60048036038101906109d691906148bd565b611f8c565b005b3480156109e957600080fd5b50610a0460048036038101906109ff91906148bd565b61202b565b005b348015610a1257600080fd5b50610a2d6004803603810190610a289190614921565b612114565b005b348015610a3b57600080fd5b50610a446122d5565b604051610a5191906147ab565b60405180910390f35b348015610a6657600080fd5b50610a6f6122e8565b005b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600d8054610acc90614a56565b80601f0160208091040260200160405190810160405280929190818152602001828054610af890614a56565b8015610b455780601f10610b1a57610100808354040283529160200191610b45565b820191906000526020600020905b815481529060010190602001808311610b2857829003601f168201915b5050505050905090565b6000610b63610b5c6123b9565b84846123c1565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600954905090565b6000610ba884848461258a565b610c6984610bb46123b9565b610c648560405180606001604052806028815260200161586d60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c1a6123b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128009092919063ffffffff16565b6123c1565b600190509392505050565b6000600a54821115610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290614af9565b60405180910390fd5b6000610cc5612864565b9050610cda818461288f90919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6000600c54905090565b60105481565b610d116123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590614b65565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601754905090565b6000610e95610df96123b9565b84610e908560056000610e0a6123b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b6123c1565b6001905092915050565b610ea76123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b90614b65565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90614bd1565b60405180910390fd5b81610ff5576000610fe684612937565b6000015190508091505061100b565b600061100084612937565b602001519050809150505b92915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b61103d6123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190614b65565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361114c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114390614c63565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090614ccf565b60405180910390fd5b606460088054905010611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614d3b565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156112f5576112b1600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c74565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114a457600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506114ef565b6114ec600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c74565b90505b919050565b60125481565b6115026123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690614b65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116556123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990614b65565b60405180910390fd5b600060108190555060006011819055506000601281905550600060138190555060006015806101000a81548160ff021916908315150217905550565b60158054906101000a900460ff1681565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117936123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790614b65565b60405180910390fd5b601560169054906101000a900460ff1615611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790614da7565b60405180910390fd5b6001601560166101000a81548160ff021916908315150217905550565b6118956123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990614b65565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161195d929190614dc7565b6020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a09190614e05565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119d76123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90614b65565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b6060600e8054611a8f90614a56565b80601f0160208091040260200160405190810160405280929190818152602001828054611abb90614a56565b8015611b085780601f10611add57610100808354040283529160200191611b08565b820191906000526020600020905b815481529060010190602001808311611aeb57829003601f168201915b5050505050905090565b6000611bd5611b1f6123b9565b84611bd0856040518060600160405280602581526020016158956025913960056000611b496123b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128009092919063ffffffff16565b6123c1565b6001905092915050565b6000611bf3611bec6123b9565b848461258a565b6001905092915050565b6000600b54905090565b611c0f6123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9390614b65565b60405180910390fd5b80471015611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690614e7e565b60405180910390fd5b611ce76119a6565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d2c573d6000803e3d6000fd5b5050565b60115481565b611d3e6123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290614b65565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ea46123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890614b65565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f946123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201890614b65565b60405180910390fd5b8060178190555050565b6120336123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614b65565b60405180910390fd5b67016345785d8a0000811161210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190614f36565b60405180910390fd5b8060168190555050565b61211c6123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614b65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614fc8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560169054906101000a900460ff1681565b6122f06123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461237d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237490614b65565b60405180910390fd5b600160108190555060016011819055506001601281905550600160138190555060016015806101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612430576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124279061505a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361249f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612496906150ec565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161257d919061484f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f09061517e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f90615210565b60405180910390fd5b600081116126ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a2906152a2565b60405180910390fd5b601560169054906101000a900460ff161580156126fb57506126cb6119a6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127329061530e565b60405180910390fd5b600061274630611409565b90506000601754821015905080801561276c5750601560149054906101000a900460ff16155b80156127c457507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156127da575060158054906101000a900460ff165b156127ee5760175491506127ed826129f6565b5b6127f9858585612c8b565b5050505050565b6000838311158290612848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283f91906146c7565b60405180910390fd5b5060008385612857919061535d565b9050809150509392505050565b6000806000612871613162565b91509150612888818361288f90919063ffffffff16565b9250505090565b60006128d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613415565b905092915050565b60008082846128e89190615391565b90508381101561292d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292490615433565b60405180910390fd5b8091505092915050565b61293f614513565b600061294a83613478565b9050600061297384836020015184604001518560600151866080015161296e612864565b613534565b905060405180610160016040528082600001518152602001826020015181526020018260400151815260200182606001518152602001826080015181526020018260a00151815260200183600001518152602001836020015181526020018360400151815260200183606001518152602001836080015181525092505050919050565b6001601560146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612a2e57612a2d615453565b5b604051908082528060200260200182016040528015612a5c5781602001602082028036833780820191505090505b5090503081600081518110612a7457612a73615482565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3d91906154c6565b81600181518110612b5157612b50615482565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bb6307f0000000000000000000000000000000000000000000000000000000000000000846123c1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612c3a9594939291906155ec565b600060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d2c5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d3e57612d3961363b565b612d84565b601654811115612d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7a906156b8565b60405180910390fd5b5b6000612d8f82612937565b9050612da48160a0015182610140015161365d565b612dcc8160400151826060015183608001518460e001518561010001518661012001516137de565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e8557612e8084848484613a8b565b6130ad565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f285750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f3d57612f38848483613cc1565b6130ac565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612fe15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ff657612ff1848483613efa565b6130ab565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130985750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130aa576130a98484848461409a565b5b5b5b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061314e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561315c5761315b614369565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156133d85782600360006008848154811061319c5761319b615482565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061328a575081600460006008848154811061322257613221615482565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156132a157600a5460095494509450505050613411565b61333160036000600884815481106132bc576132bb615482565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461438b90919063ffffffff16565b92506133c3600460006008848154811061334e5761334d615482565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361438b90919063ffffffff16565b915080806133d0906156d8565b915050613176565b506133f0600954600a5461288f90919063ffffffff16565b82101561340857600a54600954935093505050613411565b81819350935050505b9091565b6000808311829061345c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345391906146c7565b60405180910390fd5b506000838561346b919061574f565b9050809150509392505050565b61348061456d565b600061348b836143d5565b9050600061349884614406565b905060006134a585614437565b905060006134b286614468565b905060006134ff826134f1856134e3886134d58b8e61438b90919063ffffffff16565b61438b90919063ffffffff16565b61438b90919063ffffffff16565b61438b90919063ffffffff16565b90506040518060a001604052808281526020018681526020018581526020018481526020018381525095505050505050919050565b61353c61459c565b6000613551838961449990919063ffffffff16565b90506000613568848961449990919063ffffffff16565b9050600061357f858961449990919063ffffffff16565b90506000613596868961449990919063ffffffff16565b905060006135ad878961449990919063ffffffff16565b905060006135fa836135ec866135de866135d08b8d61438b90919063ffffffff16565b61438b90919063ffffffff16565b61438b90919063ffffffff16565b61438b90919063ffffffff16565b90506040518060c001604052808781526020018281526020018681526020018581526020018481526020018381525096505050505050509695505050505050565b6000601081905550600060138190555060006011819055506000601281905550565b6136af82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137da5761379681600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b613805856137f788600a5461438b90919063ffffffff16565b61438b90919063ffffffff16565b600a8190555061382083600b546128d990919063ffffffff16565b600b8190555061383b8260095461438b90919063ffffffff16565b60098190555061385682600c546128d990919063ffffffff16565b600c819055506138d08460036000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b60036000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a8357613a1d8160046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b60046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050505050565b613add82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b768160000151600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c0f8160200151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051613cb3919061484f565b60405180910390a350505050565b613d178160000151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613db08160c00151600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e498160200151600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051613eed919061484f565b60405180910390a3505050565b613f508160000151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fe98160200151600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161408d919061484f565b60405180910390a3505050565b6140ec82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141858160000151600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061421e8160c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142b78160200151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161435b919061484f565b60405180910390a350505050565b6001601081905550600160138190555060016012819055506001601181905550565b60006143cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612800565b905092915050565b60006143ff60646143f16010548561449990919063ffffffff16565b61288f90919063ffffffff16565b9050919050565b600061443060646144226011548561449990919063ffffffff16565b61288f90919063ffffffff16565b9050919050565b600061446160646144536012548561449990919063ffffffff16565b61288f90919063ffffffff16565b9050919050565b600061449260646144846013548561449990919063ffffffff16565b61288f90919063ffffffff16565b9050919050565b60008083036144ab576000905061450d565b600082846144b99190615780565b90508284826144c8919061574f565b14614508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144ff9061584c565b60405180910390fd5b809150505b92915050565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145fd826145d2565b9050919050565b61460d816145f2565b82525050565b60006020820190506146286000830184614604565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561466857808201518184015260208101905061464d565b83811115614677576000848401525b50505050565b6000601f19601f8301169050919050565b60006146998261462e565b6146a38185614639565b93506146b381856020860161464a565b6146bc8161467d565b840191505092915050565b600060208201905081810360008301526146e1818461468e565b905092915050565b600080fd5b6146f7816145f2565b811461470257600080fd5b50565b600081359050614714816146ee565b92915050565b6000819050919050565b61472d8161471a565b811461473857600080fd5b50565b60008135905061474a81614724565b92915050565b60008060408385031215614767576147666146e9565b5b600061477585828601614705565b92505060206147868582860161473b565b9150509250929050565b60008115159050919050565b6147a581614790565b82525050565b60006020820190506147c0600083018461479c565b92915050565b6000819050919050565b60006147eb6147e66147e1846145d2565b6147c6565b6145d2565b9050919050565b60006147fd826147d0565b9050919050565b600061480f826147f2565b9050919050565b61481f81614804565b82525050565b600060208201905061483a6000830184614816565b92915050565b6148498161471a565b82525050565b60006020820190506148646000830184614840565b92915050565b600080600060608486031215614883576148826146e9565b5b600061489186828701614705565b93505060206148a286828701614705565b92505060406148b38682870161473b565b9150509250925092565b6000602082840312156148d3576148d26146e9565b5b60006148e18482850161473b565b91505092915050565b600060ff82169050919050565b614900816148ea565b82525050565b600060208201905061491b60008301846148f7565b92915050565b600060208284031215614937576149366146e9565b5b600061494584828501614705565b91505092915050565b61495781614790565b811461496257600080fd5b50565b6000813590506149748161494e565b92915050565b60008060408385031215614991576149906146e9565b5b600061499f8582860161473b565b92505060206149b085828601614965565b9150509250929050565b6000602082840312156149d0576149cf6146e9565b5b60006149de84828501614965565b91505092915050565b600080604083850312156149fe576149fd6146e9565b5b6000614a0c85828601614705565b9250506020614a1d85828601614705565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6e57607f821691505b602082108103614a8157614a80614a27565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614ae3602a83614639565b9150614aee82614a87565b604082019050919050565b60006020820190508181036000830152614b1281614ad6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b4f602083614639565b9150614b5a82614b19565b602082019050919050565b60006020820190508181036000830152614b7e81614b42565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000614bbb601f83614639565b9150614bc682614b85565b602082019050919050565b60006020820190508181036000830152614bea81614bae565b9050919050565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c4d602283614639565b9150614c5882614bf1565b604082019050919050565b60006020820190508181036000830152614c7c81614c40565b9050919050565b7f4163636f756e7420616c7265616479206578636c756465640000000000000000600082015250565b6000614cb9601883614639565b9150614cc482614c83565b602082019050919050565b60006020820190508181036000830152614ce881614cac565b9050919050565b7f4578636c75646564206c69737420697320746f6f206c6f6e6700000000000000600082015250565b6000614d25601983614639565b9150614d3082614cef565b602082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564210000000000000000600082015250565b6000614d91601883614639565b9150614d9c82614d5b565b602082019050919050565b60006020820190508181036000830152614dc081614d84565b9050919050565b6000604082019050614ddc6000830185614604565b614de96020830184614840565b9392505050565b600081519050614dff8161494e565b92915050565b600060208284031215614e1b57614e1a6146e9565b5b6000614e2984828501614df0565b91505092915050565b7f696e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000614e68601883614639565b9150614e7382614e32565b602082019050919050565b60006020820190508181036000830152614e9781614e5b565b9050919050565b7f43616e6e6f7420736574207472616e73616374696f6e20616d6f756e74206c6560008201527f7373207468616e20302e312070657263656e74206f6620696e697469616c205460208201527f6f74616c20537570706c79210000000000000000000000000000000000000000604082015250565b6000614f20604c83614639565b9150614f2b82614e9e565b606082019050919050565b60006020820190508181036000830152614f4f81614f13565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fb2602683614639565b9150614fbd82614f56565b604082019050919050565b60006020820190508181036000830152614fe181614fa5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615044602483614639565b915061504f82614fe8565b604082019050919050565b6000602082019050818103600083015261507381615037565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150d6602283614639565b91506150e18261507a565b604082019050919050565b60006020820190508181036000830152615105816150c9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615168602583614639565b91506151738261510c565b604082019050919050565b600060208201905081810360008301526151978161515b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151fa602383614639565b91506152058261519e565b604082019050919050565b60006020820190508181036000830152615229816151ed565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061528c602983614639565b915061529782615230565b604082019050919050565b600060208201905081810360008301526152bb8161527f565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006152f8601883614639565b9150615303826152c2565b602082019050919050565b60006020820190508181036000830152615327816152eb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006153688261471a565b91506153738361471a565b9250828210156153865761538561532e565b5b828203905092915050565b600061539c8261471a565b91506153a78361471a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153dc576153db61532e565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061541d601b83614639565b9150615428826153e7565b602082019050919050565b6000602082019050818103600083015261544c81615410565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154c0816146ee565b92915050565b6000602082840312156154dc576154db6146e9565b5b60006154ea848285016154b1565b91505092915050565b6000819050919050565b600061551861551361550e846154f3565b6147c6565b61471a565b9050919050565b615528816154fd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615563816145f2565b82525050565b6000615575838361555a565b60208301905092915050565b6000602082019050919050565b60006155998261552e565b6155a38185615539565b93506155ae8361554a565b8060005b838110156155df5781516155c68882615569565b97506155d183615581565b9250506001810190506155b2565b5085935050505092915050565b600060a0820190506156016000830188614840565b61560e602083018761551f565b8181036040830152615620818661558e565b905061562f6060830185614604565b61563c6080830184614840565b9695505050505050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006156a2602883614639565b91506156ad82615646565b604082019050919050565b600060208201905081810360008301526156d181615695565b9050919050565b60006156e38261471a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036157155761571461532e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061575a8261471a565b91506157658361471a565b92508261577557615774615720565b5b828204905092915050565b600061578b8261471a565b91506157968361471a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157cf576157ce61532e565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615836602183614639565b9150615841826157da565b604082019050919050565b6000602082019050818103600083015261586581615829565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cb4b970b304aa9007f07703c6d3f23d476479ed0a3d257e9ea9e769972a46c0e64736f6c634300080e0033
Deployed Bytecode
0x6080604052600436106102765760003560e01c8063741af87f1161014f578063adbede72116100c1578063ea2f0b371161007a578063ea2f0b371461098b578063ec0c9d4d146109b4578063ec28438a146109dd578063f2fde38b14610a06578063f709594514610a2f578063ffc7863514610a5a5761027d565b8063adbede721461087b578063b8d36b50146108a6578063c0b0fda2146108cf578063c5254f40146108fa578063c730b8a414610923578063dd62ed3e1461094e5761027d565b80638c8f8c04116101135780638c8f8c04146107595780638da5cb5b146107825780638ff67c36146107ad57806395d89b41146107d6578063a457c2d714610801578063a9059cbb1461083e5761027d565b8063741af87f1461069857806376b851ca146106af5780637d1db4a5146106da57806388f82020146107055780638a8c523c146107425761027d565b806338780fe6116101e857806349bd5a5e116101ac57806349bd5a5e1461058857806352390c02146105b35780635342acb4146105dc57806370a082311461061957806370c668c814610656578063715018a6146106815761027d565b806338780fe61461049157806338e2f22f146104ba57806339509351146104e5578063437823ec146105225780634549b0391461054b5761027d565b806318160ddd1161023a57806318160ddd1461036b57806323b872dd146103965780632d838119146103d3578063313ce56714610410578063317653e01461043b5780633206b4aa146104665761027d565b806301ba031f1461028257806306486014146102ad57806306fdde03146102d8578063095ea7b3146103035780631694505e146103405761027d565b3661027d57005b600080fd5b34801561028e57600080fd5b50610297610a71565b6040516102a49190614613565b60405180910390f35b3480156102b957600080fd5b506102c2610a97565b6040516102cf9190614613565b60405180910390f35b3480156102e457600080fd5b506102ed610abd565b6040516102fa91906146c7565b60405180910390f35b34801561030f57600080fd5b5061032a60048036038101906103259190614750565b610b4f565b60405161033791906147ab565b60405180910390f35b34801561034c57600080fd5b50610355610b6d565b6040516103629190614825565b60405180910390f35b34801561037757600080fd5b50610380610b91565b60405161038d919061484f565b60405180910390f35b3480156103a257600080fd5b506103bd60048036038101906103b8919061486a565b610b9b565b6040516103ca91906147ab565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906148bd565b610c74565b604051610407919061484f565b60405180910390f35b34801561041c57600080fd5b50610425610ce2565b6040516104329190614906565b60405180910390f35b34801561044757600080fd5b50610450610cf9565b60405161045d919061484f565b60405180910390f35b34801561047257600080fd5b5061047b610d03565b604051610488919061484f565b60405180910390f35b34801561049d57600080fd5b506104b860048036038101906104b39190614921565b610d09565b005b3480156104c657600080fd5b506104cf610de2565b6040516104dc919061484f565b60405180910390f35b3480156104f157600080fd5b5061050c60048036038101906105079190614750565b610dec565b60405161051991906147ab565b60405180910390f35b34801561052e57600080fd5b5061054960048036038101906105449190614921565b610e9f565b005b34801561055757600080fd5b50610572600480360381019061056d919061497a565b610f8f565b60405161057f919061484f565b60405180910390f35b34801561059457600080fd5b5061059d611011565b6040516105aa9190614613565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190614921565b611035565b005b3480156105e857600080fd5b5061060360048036038101906105fe9190614921565b6113b3565b60405161061091906147ab565b60405180910390f35b34801561062557600080fd5b50610640600480360381019061063b9190614921565b611409565b60405161064d919061484f565b60405180910390f35b34801561066257600080fd5b5061066b6114f4565b604051610678919061484f565b60405180910390f35b34801561068d57600080fd5b506106966114fa565b005b3480156106a457600080fd5b506106ad61164d565b005b3480156106bb57600080fd5b506106c461171e565b6040516106d191906147ab565b60405180910390f35b3480156106e657600080fd5b506106ef61172f565b6040516106fc919061484f565b60405180910390f35b34801561071157600080fd5b5061072c60048036038101906107279190614921565b611735565b60405161073991906147ab565b60405180910390f35b34801561074e57600080fd5b5061075761178b565b005b34801561076557600080fd5b50610780600480360381019061077b919061486a565b61188d565b005b34801561078e57600080fd5b506107976119a6565b6040516107a49190614613565b60405180910390f35b3480156107b957600080fd5b506107d460048036038101906107cf91906149ba565b6119cf565b005b3480156107e257600080fd5b506107eb611a80565b6040516107f891906146c7565b60405180910390f35b34801561080d57600080fd5b5061082860048036038101906108239190614750565b611b12565b60405161083591906147ab565b60405180910390f35b34801561084a57600080fd5b5061086560048036038101906108609190614750565b611bdf565b60405161087291906147ab565b60405180910390f35b34801561088757600080fd5b50610890611bfd565b60405161089d919061484f565b60405180910390f35b3480156108b257600080fd5b506108cd60048036038101906108c891906148bd565b611c07565b005b3480156108db57600080fd5b506108e4611d30565b6040516108f1919061484f565b60405180910390f35b34801561090657600080fd5b50610921600480360381019061091c9190614921565b611d36565b005b34801561092f57600080fd5b50610938611e0f565b604051610945919061484f565b60405180910390f35b34801561095a57600080fd5b50610975600480360381019061097091906149e7565b611e15565b604051610982919061484f565b60405180910390f35b34801561099757600080fd5b506109b260048036038101906109ad9190614921565b611e9c565b005b3480156109c057600080fd5b506109db60048036038101906109d691906148bd565b611f8c565b005b3480156109e957600080fd5b50610a0460048036038101906109ff91906148bd565b61202b565b005b348015610a1257600080fd5b50610a2d6004803603810190610a289190614921565b612114565b005b348015610a3b57600080fd5b50610a446122d5565b604051610a5191906147ab565b60405180910390f35b348015610a6657600080fd5b50610a6f6122e8565b005b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600d8054610acc90614a56565b80601f0160208091040260200160405190810160405280929190818152602001828054610af890614a56565b8015610b455780601f10610b1a57610100808354040283529160200191610b45565b820191906000526020600020905b815481529060010190602001808311610b2857829003601f168201915b5050505050905090565b6000610b63610b5c6123b9565b84846123c1565b6001905092915050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6000600954905090565b6000610ba884848461258a565b610c6984610bb46123b9565b610c648560405180606001604052806028815260200161586d60289139600560008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610c1a6123b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128009092919063ffffffff16565b6123c1565b600190509392505050565b6000600a54821115610cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb290614af9565b60405180910390fd5b6000610cc5612864565b9050610cda818461288f90919063ffffffff16565b915050919050565b6000600f60009054906101000a900460ff16905090565b6000600c54905090565b60105481565b610d116123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9590614b65565b60405180910390fd5b80601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000601754905090565b6000610e95610df96123b9565b84610e908560056000610e0a6123b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b6123c1565b6001905092915050565b610ea76123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2b90614b65565b60405180910390fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600954831115610fd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcd90614bd1565b60405180910390fd5b81610ff5576000610fe684612937565b6000015190508091505061100b565b600061100084612937565b602001519050809150505b92915050565b7f000000000000000000000000227b7ca2f85d3dbfb91106e7da46a6e87e5c973681565b61103d6123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110c190614b65565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361114c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114390614c63565b60405180910390fd5b600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156111d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d090614ccf565b60405180910390fd5b606460088054905010611221576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121890614d3b565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156112f5576112b1600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c74565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506008819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156114a457600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506114ef565b6114ec600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610c74565b90505b919050565b60125481565b6115026123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461158f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161158690614b65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6116556123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d990614b65565b60405180910390fd5b600060108190555060006011819055506000601281905550600060138190555060006015806101000a81548160ff021916908315150217905550565b60158054906101000a900460ff1681565b60165481565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6117936123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611820576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181790614b65565b60405180910390fd5b601560169054906101000a900460ff1615611870576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186790614da7565b60405180910390fd5b6001601560166101000a81548160ff021916908315150217905550565b6118956123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611922576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161191990614b65565b60405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b815260040161195d929190614dc7565b6020604051808303816000875af115801561197c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119a09190614e05565b50505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6119d76123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5b90614b65565b60405180910390fd5b806015806101000a81548160ff02191690831515021790555050565b6060600e8054611a8f90614a56565b80601f0160208091040260200160405190810160405280929190818152602001828054611abb90614a56565b8015611b085780601f10611add57610100808354040283529160200191611b08565b820191906000526020600020905b815481529060010190602001808311611aeb57829003601f168201915b5050505050905090565b6000611bd5611b1f6123b9565b84611bd0856040518060600160405280602581526020016158956025913960056000611b496123b9565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128009092919063ffffffff16565b6123c1565b6001905092915050565b6000611bf3611bec6123b9565b848461258a565b6001905092915050565b6000600b54905090565b611c0f6123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9390614b65565b60405180910390fd5b80471015611cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd690614e7e565b60405180910390fd5b611ce76119a6565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611d2c573d6000803e3d6000fd5b5050565b60115481565b611d3e6123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611dcb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc290614b65565b60405180910390fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60135481565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611ea46123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2890614b65565b60405180910390fd5b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b611f946123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612021576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201890614b65565b60405180910390fd5b8060178190555050565b6120336123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b790614b65565b60405180910390fd5b67016345785d8a0000811161210a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210190614f36565b60405180910390fd5b8060168190555050565b61211c6123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a090614b65565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612218576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220f90614fc8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601560169054906101000a900460ff1681565b6122f06123b9565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461237d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237490614b65565b60405180910390fd5b600160108190555060016011819055506001601281905550600160138190555060016015806101000a81548160ff021916908315150217905550565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612430576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124279061505a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361249f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612496906150ec565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161257d919061484f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f09061517e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f90615210565b60405180910390fd5b600081116126ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a2906152a2565b60405180910390fd5b601560169054906101000a900460ff161580156126fb57506126cb6119a6565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561273b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127329061530e565b60405180910390fd5b600061274630611409565b90506000601754821015905080801561276c5750601560149054906101000a900460ff16155b80156127c457507f000000000000000000000000227b7ca2f85d3dbfb91106e7da46a6e87e5c973673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156127da575060158054906101000a900460ff165b156127ee5760175491506127ed826129f6565b5b6127f9858585612c8b565b5050505050565b6000838311158290612848576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283f91906146c7565b60405180910390fd5b5060008385612857919061535d565b9050809150509392505050565b6000806000612871613162565b91509150612888818361288f90919063ffffffff16565b9250505090565b60006128d183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613415565b905092915050565b60008082846128e89190615391565b90508381101561292d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292490615433565b60405180910390fd5b8091505092915050565b61293f614513565b600061294a83613478565b9050600061297384836020015184604001518560600151866080015161296e612864565b613534565b905060405180610160016040528082600001518152602001826020015181526020018260400151815260200182606001518152602001826080015181526020018260a00151815260200183600001518152602001836020015181526020018360400151815260200183606001518152602001836080015181525092505050919050565b6001601560146101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612a2e57612a2d615453565b5b604051908082528060200260200182016040528015612a5c5781602001602082028036833780820191505090505b5090503081600081518110612a7457612a73615482565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b3d91906154c6565b81600181518110612b5157612b50615482565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612bb6307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d846123c1565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401612c3a9594939291906155ec565b600060405180830381600087803b158015612c5457600080fd5b505af1158015612c68573d6000803e3d6000fd5b50505050506000601560146101000a81548160ff02191690831515021790555050565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680612d2c5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612d3e57612d3961363b565b612d84565b601654811115612d83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7a906156b8565b60405180910390fd5b5b6000612d8f82612937565b9050612da48160a0015182610140015161365d565b612dcc8160400151826060015183608001518460e001518561010001518661012001516137de565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168015612e6f5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612e8557612e8084848484613a8b565b6130ad565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612f285750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15612f3d57612f38848483613cc1565b6130ac565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015612fe15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612ff657612ff1848483613efa565b6130ab565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156130985750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156130aa576130a98484848461409a565b5b5b5b5b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061314e5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561315c5761315b614369565b5b50505050565b6000806000600a5490506000600954905060005b6008805490508110156133d85782600360006008848154811061319c5761319b615482565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061328a575081600460006008848154811061322257613221615482565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b156132a157600a5460095494509450505050613411565b61333160036000600884815481106132bc576132bb615482565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461438b90919063ffffffff16565b92506133c3600460006008848154811061334e5761334d615482565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361438b90919063ffffffff16565b915080806133d0906156d8565b915050613176565b506133f0600954600a5461288f90919063ffffffff16565b82101561340857600a54600954935093505050613411565b81819350935050505b9091565b6000808311829061345c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161345391906146c7565b60405180910390fd5b506000838561346b919061574f565b9050809150509392505050565b61348061456d565b600061348b836143d5565b9050600061349884614406565b905060006134a585614437565b905060006134b286614468565b905060006134ff826134f1856134e3886134d58b8e61438b90919063ffffffff16565b61438b90919063ffffffff16565b61438b90919063ffffffff16565b61438b90919063ffffffff16565b90506040518060a001604052808281526020018681526020018581526020018481526020018381525095505050505050919050565b61353c61459c565b6000613551838961449990919063ffffffff16565b90506000613568848961449990919063ffffffff16565b9050600061357f858961449990919063ffffffff16565b90506000613596868961449990919063ffffffff16565b905060006135ad878961449990919063ffffffff16565b905060006135fa836135ec866135de866135d08b8d61438b90919063ffffffff16565b61438b90919063ffffffff16565b61438b90919063ffffffff16565b61438b90919063ffffffff16565b90506040518060c001604052808781526020018281526020018681526020018581526020018481526020018381525096505050505050509695505050505050565b6000601081905550600060138190555060006011819055506000601281905550565b6136af82600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156137da5761379681600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5050565b613805856137f788600a5461438b90919063ffffffff16565b61438b90919063ffffffff16565b600a8190555061382083600b546128d990919063ffffffff16565b600b8190555061383b8260095461438b90919063ffffffff16565b60098190555061385682600c546128d990919063ffffffff16565b600c819055506138d08460036000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b60036000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060076000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613a8357613a1d8160046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b60046000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b505050505050565b613add82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613b768160000151600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613c0f8160200151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051613cb3919061484f565b60405180910390a350505050565b613d178160000151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613db08160c00151600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613e498160200151600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c00151604051613eed919061484f565b60405180910390a3505050565b613f508160000151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fe98160200151600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161408d919061484f565b60405180910390a3505050565b6140ec82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141858160000151600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461438b90919063ffffffff16565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061421e8160c00151600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506142b78160200151600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546128d990919063ffffffff16565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360c0015160405161435b919061484f565b60405180910390a350505050565b6001601081905550600160138190555060016012819055506001601181905550565b60006143cd83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612800565b905092915050565b60006143ff60646143f16010548561449990919063ffffffff16565b61288f90919063ffffffff16565b9050919050565b600061443060646144226011548561449990919063ffffffff16565b61288f90919063ffffffff16565b9050919050565b600061446160646144536012548561449990919063ffffffff16565b61288f90919063ffffffff16565b9050919050565b600061449260646144846013548561449990919063ffffffff16565b61288f90919063ffffffff16565b9050919050565b60008083036144ab576000905061450d565b600082846144b99190615780565b90508284826144c8919061574f565b14614508576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016144ff9061584c565b60405180910390fd5b809150505b92915050565b60405180610160016040528060008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b6040518060c001604052806000815260200160008152602001600081526020016000815260200160008152602001600081525090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006145fd826145d2565b9050919050565b61460d816145f2565b82525050565b60006020820190506146286000830184614604565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561466857808201518184015260208101905061464d565b83811115614677576000848401525b50505050565b6000601f19601f8301169050919050565b60006146998261462e565b6146a38185614639565b93506146b381856020860161464a565b6146bc8161467d565b840191505092915050565b600060208201905081810360008301526146e1818461468e565b905092915050565b600080fd5b6146f7816145f2565b811461470257600080fd5b50565b600081359050614714816146ee565b92915050565b6000819050919050565b61472d8161471a565b811461473857600080fd5b50565b60008135905061474a81614724565b92915050565b60008060408385031215614767576147666146e9565b5b600061477585828601614705565b92505060206147868582860161473b565b9150509250929050565b60008115159050919050565b6147a581614790565b82525050565b60006020820190506147c0600083018461479c565b92915050565b6000819050919050565b60006147eb6147e66147e1846145d2565b6147c6565b6145d2565b9050919050565b60006147fd826147d0565b9050919050565b600061480f826147f2565b9050919050565b61481f81614804565b82525050565b600060208201905061483a6000830184614816565b92915050565b6148498161471a565b82525050565b60006020820190506148646000830184614840565b92915050565b600080600060608486031215614883576148826146e9565b5b600061489186828701614705565b93505060206148a286828701614705565b92505060406148b38682870161473b565b9150509250925092565b6000602082840312156148d3576148d26146e9565b5b60006148e18482850161473b565b91505092915050565b600060ff82169050919050565b614900816148ea565b82525050565b600060208201905061491b60008301846148f7565b92915050565b600060208284031215614937576149366146e9565b5b600061494584828501614705565b91505092915050565b61495781614790565b811461496257600080fd5b50565b6000813590506149748161494e565b92915050565b60008060408385031215614991576149906146e9565b5b600061499f8582860161473b565b92505060206149b085828601614965565b9150509250929050565b6000602082840312156149d0576149cf6146e9565b5b60006149de84828501614965565b91505092915050565b600080604083850312156149fe576149fd6146e9565b5b6000614a0c85828601614705565b9250506020614a1d85828601614705565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680614a6e57607f821691505b602082108103614a8157614a80614a27565b5b50919050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000614ae3602a83614639565b9150614aee82614a87565b604082019050919050565b60006020820190508181036000830152614b1281614ad6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000614b4f602083614639565b9150614b5a82614b19565b602082019050919050565b60006020820190508181036000830152614b7e81614b42565b9050919050565b7f416d6f756e74206d757374206265206c657373207468616e20737570706c7900600082015250565b6000614bbb601f83614639565b9150614bc682614b85565b602082019050919050565b60006020820190508181036000830152614bea81614bae565b9050919050565b7f57652063616e206e6f74206578636c75646520556e697377617020726f75746560008201527f722e000000000000000000000000000000000000000000000000000000000000602082015250565b6000614c4d602283614639565b9150614c5882614bf1565b604082019050919050565b60006020820190508181036000830152614c7c81614c40565b9050919050565b7f4163636f756e7420616c7265616479206578636c756465640000000000000000600082015250565b6000614cb9601883614639565b9150614cc482614c83565b602082019050919050565b60006020820190508181036000830152614ce881614cac565b9050919050565b7f4578636c75646564206c69737420697320746f6f206c6f6e6700000000000000600082015250565b6000614d25601983614639565b9150614d3082614cef565b602082019050919050565b60006020820190508181036000830152614d5481614d18565b9050919050565b7f54726164696e6720616c726561647920656e61626c6564210000000000000000600082015250565b6000614d91601883614639565b9150614d9c82614d5b565b602082019050919050565b60006020820190508181036000830152614dc081614d84565b9050919050565b6000604082019050614ddc6000830185614604565b614de96020830184614840565b9392505050565b600081519050614dff8161494e565b92915050565b600060208284031215614e1b57614e1a6146e9565b5b6000614e2984828501614df0565b91505092915050565b7f696e73756666696369656e74204554482062616c616e63650000000000000000600082015250565b6000614e68601883614639565b9150614e7382614e32565b602082019050919050565b60006020820190508181036000830152614e9781614e5b565b9050919050565b7f43616e6e6f7420736574207472616e73616374696f6e20616d6f756e74206c6560008201527f7373207468616e20302e312070657263656e74206f6620696e697469616c205460208201527f6f74616c20537570706c79210000000000000000000000000000000000000000604082015250565b6000614f20604c83614639565b9150614f2b82614e9e565b606082019050919050565b60006020820190508181036000830152614f4f81614f13565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000614fb2602683614639565b9150614fbd82614f56565b604082019050919050565b60006020820190508181036000830152614fe181614fa5565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000615044602483614639565b915061504f82614fe8565b604082019050919050565b6000602082019050818103600083015261507381615037565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006150d6602283614639565b91506150e18261507a565b604082019050919050565b60006020820190508181036000830152615105816150c9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000615168602583614639565b91506151738261510c565b604082019050919050565b600060208201905081810360008301526151978161515b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006151fa602383614639565b91506152058261519e565b604082019050919050565b60006020820190508181036000830152615229816151ed565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061528c602983614639565b915061529782615230565b604082019050919050565b600060208201905081810360008301526152bb8161527f565b9050919050565b7f54726164696e67206e6f742079657420656e61626c6564210000000000000000600082015250565b60006152f8601883614639565b9150615303826152c2565b602082019050919050565b60006020820190508181036000830152615327816152eb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006153688261471a565b91506153738361471a565b9250828210156153865761538561532e565b5b828203905092915050565b600061539c8261471a565b91506153a78361471a565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156153dc576153db61532e565b5b828201905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061541d601b83614639565b9150615428826153e7565b602082019050919050565b6000602082019050818103600083015261544c81615410565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506154c0816146ee565b92915050565b6000602082840312156154dc576154db6146e9565b5b60006154ea848285016154b1565b91505092915050565b6000819050919050565b600061551861551361550e846154f3565b6147c6565b61471a565b9050919050565b615528816154fd565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615563816145f2565b82525050565b6000615575838361555a565b60208301905092915050565b6000602082019050919050565b60006155998261552e565b6155a38185615539565b93506155ae8361554a565b8060005b838110156155df5781516155c68882615569565b97506155d183615581565b9250506001810190506155b2565b5085935050505092915050565b600060a0820190506156016000830188614840565b61560e602083018761551f565b8181036040830152615620818661558e565b905061562f6060830185614604565b61563c6080830184614840565b9695505050505050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d61785460008201527f78416d6f756e742e000000000000000000000000000000000000000000000000602082015250565b60006156a2602883614639565b91506156ad82615646565b604082019050919050565b600060208201905081810360008301526156d181615695565b9050919050565b60006156e38261471a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036157155761571461532e565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061575a8261471a565b91506157658361471a565b92508261577557615774615720565b5b828204905092915050565b600061578b8261471a565b91506157968361471a565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156157cf576157ce61532e565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615836602183614639565b9150615841826157da565b604082019050919050565b6000602082019050818103600083015261586581615829565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220cb4b970b304aa9007f07703c6d3f23d476479ed0a3d257e9ea9e769972a46c0e64736f6c634300080e0033
Deployed Bytecode Sourcemap
24813:19738:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26620:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26710:81;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28062:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28974:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26800:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28339:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29143:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31064:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28248:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30210:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26452:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42898:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30473:129;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29464:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42223:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;30610:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26858:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31325:512;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36796:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28442:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26530:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16206:148;;;;;;;;;;;;;:::i;:::-;;42678:212;;;;;;;;;;;;;:::i;:::-;;26943:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27039:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29967:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43470:147;;;;;;;;;;;;;:::i;:::-;;44379:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15570:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43625:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;28153:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29690:269;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28648:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30095:107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;44062:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26494:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;43029:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26576:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28823:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42342:110;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43818:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;43164:298;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16509:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26991:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;42460:210;;;;;;;;;;;;;:::i;:::-;;26620:83;;;;;;;;;;;;;:::o;26710:81::-;;;;;;;;;;;;;:::o;28062:83::-;28099:13;28132:5;28125:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28062:83;:::o;28974:161::-;29049:4;29066:39;29075:12;:10;:12::i;:::-;29089:7;29098:6;29066:8;:39::i;:::-;29123:4;29116:11;;28974:161;;;;:::o;26800:51::-;;;:::o;28339:95::-;28392:7;28419;;28412:14;;28339:95;:::o;29143:313::-;29241:4;29258:36;29268:6;29276:9;29287:6;29258:9;:36::i;:::-;29305:121;29314:6;29322:12;:10;:12::i;:::-;29336:89;29374:6;29336:89;;;;;;;;;;;;;;;;;:11;:19;29348:6;29336:19;;;;;;;;;;;;;;;:33;29356:12;:10;:12::i;:::-;29336:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;29305:8;:121::i;:::-;29444:4;29437:11;;29143:313;;;;;:::o;31064:253::-;31130:7;31169;;31158;:18;;31150:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;31234:19;31257:10;:8;:10::i;:::-;31234:33;;31285:24;31297:11;31285:7;:11;;:24;;;;:::i;:::-;31278:31;;;31064:253;;;:::o;28248:83::-;28289:5;28314:9;;;;;;;;;;;28307:16;;28248:83;:::o;30210:95::-;30256:7;30283:14;;30276:21;;30210:95;:::o;26452:33::-;;;;:::o;42898:123::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43004:9:::1;42980:21;;:33;;;;;;;;;;;;;;;;;;42898:123:::0;:::o;30473:129::-;30536:7;30563:31;;30556:38;;30473:129;:::o;29464:218::-;29552:4;29569:83;29578:12;:10;:12::i;:::-;29592:7;29601:50;29640:10;29601:11;:25;29613:12;:10;:12::i;:::-;29601:25;;;;;;;;;;;;;;;:34;29627:7;29601:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;29569:8;:83::i;:::-;29670:4;29663:11;;29464:218;;;;:::o;42223:111::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42322:4:::1;42292:18;:27;42311:7;42292:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;42223:111:::0;:::o;30610:446::-;30700:7;30739;;30728;:18;;30720:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;30798:17;30793:256;;30832:15;30850:19;30861:7;30850:10;:19::i;:::-;:27;;;30832:45;;30899:7;30892:14;;;;;30793:256;30939:23;30965:19;30976:7;30965:10;:19::i;:::-;:35;;;30939:61;;31022:15;31015:22;;;30610:446;;;;;:::o;26858:38::-;;;:::o;31325:512::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;31418:42:::1;31407:53;;:7;:53;;::::0;31399:100:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;31519:11;:20;31531:7;31519:20;;;;;;;;;;;;;;;;;;;;;;;;;31518:21;31510:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;31606:3;31587:9;:16;;;;:22;31579:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;31672:1;31653:7;:16;31661:7;31653:16;;;;;;;;;;;;;;;;:20;31650:108;;;31709:37;31729:7;:16;31737:7;31729:16;;;;;;;;;;;;;;;;31709:19;:37::i;:::-;31690:7;:16;31698:7;31690:16;;;;;;;;;;;;;;;:56;;;;31650:108;31791:4;31768:11;:20;31780:7;31768:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;31806:9;31821:7;31806:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31325:512:::0;:::o;36796:123::-;36860:4;36884:18;:27;36903:7;36884:27;;;;;;;;;;;;;;;;;;;;;;;;;36877:34;;36796:123;;;:::o;28442:198::-;28508:7;28532:11;:20;28544:7;28532:20;;;;;;;;;;;;;;;;;;;;;;;;;28528:49;;;28561:7;:16;28569:7;28561:16;;;;;;;;;;;;;;;;28554:23;;;;28528:49;28595:37;28615:7;:16;28623:7;28615:16;;;;;;;;;;;;;;;;28595:19;:37::i;:::-;28588:44;;28442:198;;;;:::o;26530:37::-;;;;:::o;16206:148::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16313:1:::1;16276:40;;16297:6;::::0;::::1;;;;;;;;16276:40;;;;;;;;;;;;16344:1;16327:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;16206:148::o:0;42678:212::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42753:1:::1;42736:14;:18;;;;42776:1;42765:8;:12;;;;42809:1;42788:18;:22;;;;42840:1;42821:16;:20;;;;42877:5;42852:22;::::0;:30:::1;;;;;;;;;;;;;;;;;;42678:212::o:0;26943:41::-;;;;;;;;;;;;:::o;27039:49::-;;;;:::o;29967:120::-;30035:4;30059:11;:20;30071:7;30059:20;;;;;;;;;;;;;;;;;;;;;;;;;30052:27;;29967:120;;;:::o;43470:147::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43532:15:::1;;;;;;;;;;;43531:16;43523:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;43605:4;43587:15;;:22;;;;;;;;;;;;;;;;;;43470:147::o:0;44379:167::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;44504:10:::1;44497:27;;;44525:3;44530:7;44497:41;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;44379:167:::0;;;:::o;15570:79::-;15608:7;15635:6;;;;;;;;;;;15628:13;;15570:79;:::o;43625:118::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43727:8:::1;43702:22;::::0;:33:::1;;;;;;;;;;;;;;;;;;43625:118:::0;:::o;28153:87::-;28192:13;28225:7;28218:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28153:87;:::o;29690:269::-;29783:4;29800:129;29809:12;:10;:12::i;:::-;29823:7;29832:96;29871:15;29832:96;;;;;;;;;;;;;;;;;:11;:25;29844:12;:10;:12::i;:::-;29832:25;;;;;;;;;;;;;;;:34;29858:7;29832:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;29800:8;:129::i;:::-;29947:4;29940:11;;29690:269;;;;:::o;28648:167::-;28726:4;28743:42;28753:12;:10;:12::i;:::-;28767:9;28778:6;28743:9;:42::i;:::-;28803:4;28796:11;;28648:167;;;;:::o;30095:107::-;30147:7;30174:20;;30167:27;;30095:107;:::o;44062:206::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;44175:9:::1;44150:21;:34;;44142:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;44232:7;:5;:7::i;:::-;44224:25;;:36;44250:9;44224:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;44062:206:::0;:::o;26494:27::-;;;;:::o;43029:127::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43139:9:::1;43113:23;;:35;;;;;;;;;;;;;;;;;;43029:127:::0;:::o;26576:35::-;;;;:::o;28823:143::-;28904:7;28931:11;:18;28943:5;28931:18;;;;;;;;;;;;;;;:27;28950:7;28931:27;;;;;;;;;;;;;;;;28924:34;;28823:143;;;;:::o;42342:110::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42439:5:::1;42409:18;:27;42428:7;42409:27;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;42342:110:::0;:::o;43818:148::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43947:11:::1;43913:31;:45;;;;43818:148:::0;:::o;43164:298::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;43299:19:::1;43267:29;:51;43259:140;;;;;;;;;;;;:::i;:::-;;;;;;;;;43425:29;43410:12;:44;;;;43164:298:::0;:::o;16509:244::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16618:1:::1;16598:22;;:8;:22;;::::0;16590:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;16708:8;16679:38;;16700:6;::::0;::::1;;;;;;;;16679:38;;;;;;;;;;;;16737:8;16728:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;16509:244:::0;:::o;26991:35::-;;;;;;;;;;;;;:::o;42460:210::-;15792:12;:10;:12::i;:::-;15782:22;;:6;;;;;;;;;;:22;;;15774:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;42534:1:::1;42517:14;:18;;;;42557:1;42546:8;:12;;;;42590:1;42569:18;:22;;;;42621:1;42602:16;:20;;;;42658:4;42633:22;::::0;:29:::1;;;;;;;;;;;;;;;;;;42460:210::o:0;7976:115::-;8029:15;8072:10;8057:26;;7976:115;:::o;36927:329::-;37037:1;37020:19;;:5;:19;;;37012:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37118:1;37099:21;;:7;:21;;;37091:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37194:6;37164:11;:18;37176:5;37164:18;;;;;;;;;;;;;;;:27;37183:7;37164:27;;;;;;;;;;;;;;;:36;;;;37232:7;37216:32;;37225:5;37216:32;;;37241:6;37216:32;;;;;;:::i;:::-;;;;;;;;36927:329;;;:::o;37264:1489::-;37402:1;37386:18;;:4;:18;;;37378:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;37479:1;37465:16;;:2;:16;;;37457:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37549:1;37540:6;:10;37532:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;37699:15;;;;;;;;;;;37698:16;:35;;;;;37726:7;:5;:7::i;:::-;37718:15;;:4;:15;;;;37698:35;37695:101;;;37750:34;;;;;;;;;;:::i;:::-;;;;;;;;37695:101;38100:28;38131:24;38149:4;38131:9;:24::i;:::-;38100:55;;38166:24;38217:31;;38193:20;:55;;38166:82;;38277:19;:55;;;;;38314:18;;;;;;;;;;;38313:19;38277:55;:93;;;;;38357:13;38349:21;;:4;:21;;;;38277:93;:132;;;;;38387:22;;;;;;;;;;38277:132;38259:376;;;38459:31;;38436:54;;38578:45;38602:20;38578:23;:45::i;:::-;38259:376;38713:30;38728:4;38733:2;38736:6;38713:14;:30::i;:::-;37367:1386;;37264:1489;;;:::o;4386:192::-;4472:7;4505:1;4500;:6;;4508:12;4492:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;4532:9;4548:1;4544;:5;;;;:::i;:::-;4532:17;;4569:1;4562:8;;;4386:192;;;;;:::o;34722:163::-;34763:7;34784:15;34801;34820:19;:17;:19::i;:::-;34783:56;;;;34857:20;34869:7;34857;:11;;:20;;;;:::i;:::-;34850:27;;;;34722:163;:::o;5784:132::-;5842:7;5869:39;5873:1;5876;5869:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;5862:46;;5784:132;;;;:::o;3483:181::-;3541:7;3561:9;3577:1;3573;:5;;;;:::i;:::-;3561:17;;3602:1;3597;:6;;3589:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;3655:1;3648:8;;;3483:181;;;;:::o;32634:697::-;32693:19;;:::i;:::-;32725:24;32752:20;32764:7;32752:11;:20::i;:::-;32725:47;;32783:24;32810:112;32822:7;32831:3;:18;;;32851:3;:12;;;32865:3;:22;;;32889:3;:20;;;32911:10;:8;:10::i;:::-;32810:11;:112::i;:::-;32783:139;;32942:381;;;;;;;;32969:3;:11;;;32942:381;;;;32995:3;:19;;;32942:381;;;;33029:3;:18;;;32942:381;;;;33062:3;:12;;;32942:381;;;;33089:3;:22;;;32942:381;;;;33126:3;:20;;;32942:381;;;;33161:3;:19;;;32942:381;;;;33195:3;:18;;;32942:381;;;;33228:3;:12;;;32942:381;;;;33255:3;:22;;;32942:381;;;;33292:3;:20;;;32942:381;;;32935:388;;;;32634:697;;;:::o;38762:616::-;27296:4;27275:18;;:25;;;;;;;;;;;;;;;;;;38907:21:::1;38945:1;38931:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38907:40;;38976:4;38958;38963:1;38958:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;39002:15;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;38992:4;38997:1;38992:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;39037:62;39054:4;39069:15;39087:11;39037:8;:62::i;:::-;39138:15;:66;;;39219:11;39245:1;39289:4;39308:21;;;;;;;;;;;39344:15;39138:232;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;38836:542;27344:5:::0;27323:18;;:26;;;;;;;;;;;;;;;;;;38762:616;:::o;39459:1222::-;39556:18;:26;39575:6;39556:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;39586:18;:29;39605:9;39586:29;;;;;;;;;;;;;;;;;;;;;;;;;39556:59;39553:220;;;39631:14;:12;:14::i;:::-;39553:220;;;39704:12;;39694:6;:22;;39686:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;39553:220;39785:22;39810:18;39821:6;39810:10;:18::i;:::-;39785:43;;39839:62;39860:2;:19;;;39881:2;:19;;;39839:20;:62::i;:::-;39912:124;39927:2;:17;;;39946:2;:11;;;39959:2;:21;;;39982:2;:17;;;40001:2;:11;;;40014:2;:21;;;39912:14;:124::i;:::-;40053:11;:19;40065:6;40053:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;40077:11;:22;40089:9;40077:22;;;;;;;;;;;;;;;;;;;;;;;;;40076:23;40053:46;40049:520;;;40116:52;40138:6;40146:9;40157:6;40165:2;40116:21;:52::i;:::-;40049:520;;;40191:11;:19;40203:6;40191:19;;;;;;;;;;;;;;;;;;;;;;;;;40190:20;:46;;;;;40214:11;:22;40226:9;40214:22;;;;;;;;;;;;;;;;;;;;;;;;;40190:46;40186:383;;;40253:42;40273:6;40281:9;40292:2;40253:19;:42::i;:::-;40186:383;;;40318:11;:19;40330:6;40318:19;;;;;;;;;;;;;;;;;;;;;;;;;40317:20;:47;;;;;40342:11;:22;40354:9;40342:22;;;;;;;;;;;;;;;;;;;;;;;;;40341:23;40317:47;40313:256;;;40381:40;40399:6;40407:9;40418:2;40381:17;:40::i;:::-;40313:256;;;40443:11;:19;40455:6;40443:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;40466:11;:22;40478:9;40466:22;;;;;;;;;;;;;;;;;;;;;;;;;40443:45;40439:130;;;40505:52;40527:6;40535:9;40546:6;40554:2;40505:21;:52::i;:::-;40439:130;40313:256;40186:383;40049:520;40584:18;:26;40603:6;40584:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;40614:18;:29;40633:9;40614:29;;;;;;;;;;;;;;;;;;;;;;;;;40584:59;40581:92;;;40658:15;:13;:15::i;:::-;40581:92;39542:1139;39459:1222;;;:::o;34893:555::-;34943:7;34952;34972:15;34990:7;;34972:25;;35008:15;35026:7;;35008:25;;35049:9;35044:289;35068:9;:16;;;;35064:1;:20;35044:289;;;35134:7;35110;:21;35118:9;35128:1;35118:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35110:21;;;;;;;;;;;;;;;;:31;:66;;;;35169:7;35145;:21;35153:9;35163:1;35153:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35145:21;;;;;;;;;;;;;;;;:31;35110:66;35106:97;;;35186:7;;35195;;35178:25;;;;;;;;;35106:97;35228:34;35240:7;:21;35248:9;35258:1;35248:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35240:21;;;;;;;;;;;;;;;;35228:7;:11;;:34;;;;:::i;:::-;35218:44;;35287:34;35299:7;:21;35307:9;35317:1;35307:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;35299:21;;;;;;;;;;;;;;;;35287:7;:11;;:34;;;;:::i;:::-;35277:44;;35086:3;;;;;:::i;:::-;;;;35044:289;;;;35357:20;35369:7;;35357;;:11;;:20;;;;:::i;:::-;35347:7;:30;35343:61;;;35387:7;;35396;;35379:25;;;;;;;;35343:61;35423:7;35432;35415:25;;;;;;34893:555;;;:::o;6412:278::-;6498:7;6530:1;6526;:5;6533:12;6518:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;6557:9;6573:1;6569;:5;;;;:::i;:::-;6557:17;;6681:1;6674:8;;;6412:278;;;;;:::o;33339:594::-;33399:20;;:::i;:::-;33432:22;33457:31;33480:7;33457:22;:31::i;:::-;33432:56;;33499:16;33518:25;33535:7;33518:16;:25::i;:::-;33499:44;;33554:26;33583:35;33610:7;33583:26;:35::i;:::-;33554:64;;33629:24;33656:33;33681:7;33656:24;:33::i;:::-;33629:60;;33700:23;33726:87;33796:16;33726:65;33772:18;33726:41;33758:8;33726:27;33738:14;33726:7;:11;;:27;;;;:::i;:::-;:31;;:41;;;;:::i;:::-;:45;;:65;;;;:::i;:::-;:69;;:87;;;;:::i;:::-;33700:113;;33831:94;;;;;;;;33845:15;33831:94;;;;33862:14;33831:94;;;;33878:8;33831:94;;;;33888:18;33831:94;;;;33908:16;33831:94;;;33824:101;;;;;;;33339:594;;;:::o;33941:773::-;34118:20;;:::i;:::-;34151:15;34169:24;34181:11;34169:7;:11;;:24;;;;:::i;:::-;34151:42;;34204:22;34229:31;34248:11;34229:14;:18;;:31;;;;:::i;:::-;34204:56;;34271:16;34290:25;34303:11;34290:8;:12;;:25;;;;:::i;:::-;34271:44;;34326:26;34355:35;34378:11;34355:18;:22;;:35;;;;:::i;:::-;34326:64;;34401:24;34428:33;34449:11;34428:16;:20;;:33;;;;:::i;:::-;34401:60;;34472:23;34498:87;34566:18;34498:63;34552:8;34498:49;34530:16;34498:27;34510:14;34498:7;:11;;:27;;;;:::i;:::-;:31;;:49;;;;:::i;:::-;:53;;:63;;;;:::i;:::-;:67;;:87;;;;:::i;:::-;34472:113;;34603:103;;;;;;;;34617:7;34603:103;;;;34626:15;34603:103;;;;34643:14;34603:103;;;;34659:8;34603:103;;;;34669:18;34603:103;;;;34689:16;34603:103;;;34596:110;;;;;;;;33941:773;;;;;;;;:::o;36470:156::-;36530:1;36513:14;:18;;;;36561:1;36542:16;:20;;;;36584:1;36573:8;:12;;;;36617:1;36596:18;:22;;;;36470:156::o;35456:302::-;35582:44;35609:16;35582:7;:22;35598:4;35582:22;;;;;;;;;;;;;;;;:26;;:44;;;;:::i;:::-;35557:7;:22;35573:4;35557:22;;;;;;;;;;;;;;;:69;;;;35640:11;:26;35660:4;35640:26;;;;;;;;;;;;;;;;;;;;;;;;;35637:113;;;35706:44;35733:16;35706:7;:22;35722:4;35706:22;;;;;;;;;;;;;;;;:26;;:44;;;;:::i;:::-;35681:7;:22;35697:4;35681:22;;;;;;;;;;;;;;;:69;;;;35637:113;35456:302;;:::o;31938:688::-;32131:41;32163:8;32131:27;32143:14;32131:7;;:11;;:27;;;;:::i;:::-;:31;;:41;;;;:::i;:::-;32121:7;:51;;;;32206:40;32231:14;32206:20;;:24;;:40;;;;:::i;:::-;32183:20;:63;;;;32267:21;32279:8;32267:7;;:11;;:21;;;;:::i;:::-;32257:7;:31;;;;32316:28;32335:8;32316:14;;:18;;:28;;;;:::i;:::-;32299:14;:45;;;;32392:56;32429:18;32392:7;:32;32400:23;;;;;;;;;;;32392:32;;;;;;;;;;;;;;;;:36;;:56;;;;:::i;:::-;32357:7;:32;32365:23;;;;;;;;;;;32357:32;;;;;;;;;;;;;;;:91;;;;32463:11;:36;32475:23;;;;;;;;;;;32463:36;;;;;;;;;;;;;;;;;;;;;;;;;32459:160;;;32551:56;32588:18;32551:7;:32;32559:23;;;;;;;;;;;32551:32;;;;;;;;;;;;;;;;:36;;:56;;;;:::i;:::-;32516:7;:32;32524:23;;;;;;;;;;;32516:32;;;;;;;;;;;;;;;:91;;;;32459:160;31938:688;;;;;;:::o;41379:377::-;41523:28;41543:7;41523;:15;41531:6;41523:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41505:7;:15;41513:6;41505:15;;;;;;;;;;;;;;;:46;;;;41580:31;41600:2;:10;;;41580:7;:15;41588:6;41580:15;;;;;;;;;;;;;;;;:19;;:31;;;;:::i;:::-;41562:7;:15;41570:6;41562:15;;;;;;;;;;;;;;;:49;;;;41643:42;41666:2;:18;;;41643:7;:18;41651:9;41643:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;41622:7;:18;41630:9;41622:18;;;;;;;;;;;;;;;:63;;;;41718:9;41701:47;;41710:6;41701:47;;;41729:2;:18;;;41701:47;;;;;;:::i;:::-;;;;;;;;41379:377;;;;:::o;40996:375::-;41121:31;41141:2;:10;;;41121:7;:15;41129:6;41121:15;;;;;;;;;;;;;;;;:19;;:31;;;;:::i;:::-;41103:7;:15;41111:6;41103:15;;;;;;;;;;;;;;;:49;;;;41184:42;41207:2;:18;;;41184:7;:18;41192:9;41184:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;41163:7;:18;41171:9;41163:18;;;;;;;;;;;;;;;:63;;;;41258:42;41281:2;:18;;;41258:7;:18;41266:9;41258:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;41237:7;:18;41245:9;41237:18;;;;;;;;;;;;;;;:63;;;;41333:9;41316:47;;41325:6;41316:47;;;41344:2;:18;;;41316:47;;;;;;:::i;:::-;;;;;;;;40996:375;;;:::o;40689:299::-;40812:31;40832:2;:10;;;40812:7;:15;40820:6;40812:15;;;;;;;;;;;;;;;;:19;;:31;;;;:::i;:::-;40794:7;:15;40802:6;40794:15;;;;;;;;;;;;;;;:49;;;;40875:42;40898:2;:18;;;40875:7;:18;40883:9;40875:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;40854:7;:18;40862:9;40854:18;;;;;;;;;;;;;;;:63;;;;40950:9;40933:47;;40942:6;40933:47;;;40961:2;:18;;;40933:47;;;;;;:::i;:::-;;;;;;;;40689:299;;;:::o;41764:451::-;41908:28;41928:7;41908;:15;41916:6;41908:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;41890:7;:15;41898:6;41890:15;;;;;;;;;;;;;;;:46;;;;41965:31;41985:2;:10;;;41965:7;:15;41973:6;41965:15;;;;;;;;;;;;;;;;:19;;:31;;;;:::i;:::-;41947:7;:15;41955:6;41947:15;;;;;;;;;;;;;;;:49;;;;42028:42;42051:2;:18;;;42028:7;:18;42036:9;42028:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;42007:7;:18;42015:9;42007:18;;;;;;;;;;;;;;;:63;;;;42102:42;42125:2;:18;;;42102:7;:18;42110:9;42102:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;42081:7;:18;42089:9;42081:18;;;;;;;;;;;;;;;:63;;;;42177:9;42160:47;;42169:6;42160:47;;;42188:2;:18;;;42160:47;;;;;;:::i;:::-;;;;;;;;41764:451;;;;:::o;36634:154::-;36695:1;36678:14;:18;;;;36726:1;36707:16;:20;;;;36759:1;36738:18;:22;;;;36782:1;36771:8;:12;;;;36634:154::o;3947:136::-;4005:7;4032:43;4036:1;4039;4032:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;4025:50;;3947:136;;;;:::o;35766:168::-;35837:7;35864:62;35910:5;35864:27;35876:14;;35864:7;:11;;:27;;;;:::i;:::-;:31;;:62;;;;:::i;:::-;35857:69;;35766:168;;;:::o;35942:156::-;36007:7;36034:56;36074:5;36034:21;36046:8;;36034:7;:11;;:21;;;;:::i;:::-;:25;;:56;;;;:::i;:::-;36027:63;;35942:156;;;:::o;36106:176::-;36181:7;36208:66;36258:5;36208:31;36220:18;;36208:7;:11;;:31;;;;:::i;:::-;:35;;:66;;;;:::i;:::-;36201:73;;36106:176;;;:::o;36290:172::-;36363:7;36390:64;36438:5;36390:29;36402:16;;36390:7;:11;;:29;;;;:::i;:::-;:33;;:64;;;;:::i;:::-;36383:71;;36290:172;;;:::o;4837:471::-;4895:7;5145:1;5140;:6;5136:47;;5170:1;5163:8;;;;5136:47;5195:9;5211:1;5207;:5;;;;:::i;:::-;5195:17;;5240:1;5235;5231;:5;;;;:::i;:::-;:10;5223:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;5299:1;5292:8;;;4837:471;;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:99::-;645:6;679:5;673:12;663:22;;593:99;;;:::o;698:169::-;782:11;816:6;811:3;804:19;856:4;851:3;847:14;832:29;;698:169;;;;:::o;873:307::-;941:1;951:113;965:6;962:1;959:13;951:113;;;1050:1;1045:3;1041:11;1035:18;1031:1;1026:3;1022:11;1015:39;987:2;984:1;980:10;975:15;;951:113;;;1082:6;1079:1;1076:13;1073:101;;;1162:1;1153:6;1148:3;1144:16;1137:27;1073:101;922:258;873:307;;;:::o;1186:102::-;1227:6;1278:2;1274:7;1269:2;1262:5;1258:14;1254:28;1244:38;;1186:102;;;:::o;1294:364::-;1382:3;1410:39;1443:5;1410:39;:::i;:::-;1465:71;1529:6;1524:3;1465:71;:::i;:::-;1458:78;;1545:52;1590:6;1585:3;1578:4;1571:5;1567:16;1545:52;:::i;:::-;1622:29;1644:6;1622:29;:::i;:::-;1617:3;1613:39;1606:46;;1386:272;1294:364;;;;:::o;1664:313::-;1777:4;1815:2;1804:9;1800:18;1792:26;;1864:9;1858:4;1854:20;1850:1;1839:9;1835:17;1828:47;1892:78;1965:4;1956:6;1892:78;:::i;:::-;1884:86;;1664:313;;;;:::o;2064:117::-;2173:1;2170;2163:12;2310:122;2383:24;2401:5;2383:24;:::i;:::-;2376:5;2373:35;2363:63;;2422:1;2419;2412:12;2363:63;2310:122;:::o;2438:139::-;2484:5;2522:6;2509:20;2500:29;;2538:33;2565:5;2538:33;:::i;:::-;2438:139;;;;:::o;2583:77::-;2620:7;2649:5;2638:16;;2583:77;;;:::o;2666:122::-;2739:24;2757:5;2739:24;:::i;:::-;2732:5;2729:35;2719:63;;2778:1;2775;2768:12;2719:63;2666:122;:::o;2794:139::-;2840:5;2878:6;2865:20;2856:29;;2894:33;2921:5;2894:33;:::i;:::-;2794:139;;;;:::o;2939:474::-;3007:6;3015;3064:2;3052:9;3043:7;3039:23;3035:32;3032:119;;;3070:79;;:::i;:::-;3032:119;3190:1;3215:53;3260:7;3251:6;3240:9;3236:22;3215:53;:::i;:::-;3205:63;;3161:117;3317:2;3343:53;3388:7;3379:6;3368:9;3364:22;3343:53;:::i;:::-;3333:63;;3288:118;2939:474;;;;;:::o;3419:90::-;3453:7;3496:5;3489:13;3482:21;3471:32;;3419:90;;;:::o;3515:109::-;3596:21;3611:5;3596:21;:::i;:::-;3591:3;3584:34;3515:109;;:::o;3630:210::-;3717:4;3755:2;3744:9;3740:18;3732:26;;3768:65;3830:1;3819:9;3815:17;3806:6;3768:65;:::i;:::-;3630:210;;;;:::o;3846:60::-;3874:3;3895:5;3888:12;;3846:60;;;:::o;3912:142::-;3962:9;3995:53;4013:34;4022:24;4040:5;4022:24;:::i;:::-;4013:34;:::i;:::-;3995:53;:::i;:::-;3982:66;;3912:142;;;:::o;4060:126::-;4110:9;4143:37;4174:5;4143:37;:::i;:::-;4130:50;;4060:126;;;:::o;4192:153::-;4269:9;4302:37;4333:5;4302:37;:::i;:::-;4289:50;;4192:153;;;:::o;4351:185::-;4465:64;4523:5;4465:64;:::i;:::-;4460:3;4453:77;4351:185;;:::o;4542:276::-;4662:4;4700:2;4689:9;4685:18;4677:26;;4713:98;4808:1;4797:9;4793:17;4784:6;4713:98;:::i;:::-;4542:276;;;;:::o;4824:118::-;4911:24;4929:5;4911:24;:::i;:::-;4906:3;4899:37;4824:118;;:::o;4948:222::-;5041:4;5079:2;5068:9;5064:18;5056:26;;5092:71;5160:1;5149:9;5145:17;5136:6;5092:71;:::i;:::-;4948:222;;;;:::o;5176:619::-;5253:6;5261;5269;5318:2;5306:9;5297:7;5293:23;5289:32;5286:119;;;5324:79;;:::i;:::-;5286:119;5444:1;5469:53;5514:7;5505:6;5494:9;5490:22;5469:53;:::i;:::-;5459:63;;5415:117;5571:2;5597:53;5642:7;5633:6;5622:9;5618:22;5597:53;:::i;:::-;5587:63;;5542:118;5699:2;5725:53;5770:7;5761:6;5750:9;5746:22;5725:53;:::i;:::-;5715:63;;5670:118;5176:619;;;;;:::o;5801:329::-;5860:6;5909:2;5897:9;5888:7;5884:23;5880:32;5877:119;;;5915:79;;:::i;:::-;5877:119;6035:1;6060:53;6105:7;6096:6;6085:9;6081:22;6060:53;:::i;:::-;6050:63;;6006:117;5801:329;;;;:::o;6136:86::-;6171:7;6211:4;6204:5;6200:16;6189:27;;6136:86;;;:::o;6228:112::-;6311:22;6327:5;6311:22;:::i;:::-;6306:3;6299:35;6228:112;;:::o;6346:214::-;6435:4;6473:2;6462:9;6458:18;6450:26;;6486:67;6550:1;6539:9;6535:17;6526:6;6486:67;:::i;:::-;6346:214;;;;:::o;6566:329::-;6625:6;6674:2;6662:9;6653:7;6649:23;6645:32;6642:119;;;6680:79;;:::i;:::-;6642:119;6800:1;6825:53;6870:7;6861:6;6850:9;6846:22;6825:53;:::i;:::-;6815:63;;6771:117;6566:329;;;;:::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:323::-;7692:6;7741:2;7729:9;7720:7;7716:23;7712:32;7709:119;;;7747:79;;:::i;:::-;7709:119;7867:1;7892:50;7934:7;7925:6;7914:9;7910:22;7892:50;:::i;:::-;7882:60;;7838:114;7636:323;;;;:::o;7965:474::-;8033:6;8041;8090:2;8078:9;8069:7;8065:23;8061:32;8058:119;;;8096:79;;:::i;:::-;8058:119;8216:1;8241:53;8286:7;8277:6;8266:9;8262:22;8241:53;:::i;:::-;8231:63;;8187:117;8343:2;8369:53;8414:7;8405:6;8394:9;8390:22;8369:53;:::i;:::-;8359:63;;8314:118;7965:474;;;;;:::o;8445:180::-;8493:77;8490:1;8483:88;8590:4;8587:1;8580:15;8614:4;8611:1;8604:15;8631:320;8675:6;8712:1;8706:4;8702:12;8692:22;;8759:1;8753:4;8749:12;8780:18;8770:81;;8836:4;8828:6;8824:17;8814:27;;8770:81;8898:2;8890:6;8887:14;8867:18;8864:38;8861:84;;8917:18;;:::i;:::-;8861:84;8682:269;8631:320;;;:::o;8957:229::-;9097:34;9093:1;9085:6;9081:14;9074:58;9166:12;9161:2;9153:6;9149:15;9142:37;8957:229;:::o;9192:366::-;9334:3;9355:67;9419:2;9414:3;9355:67;:::i;:::-;9348:74;;9431:93;9520:3;9431:93;:::i;:::-;9549:2;9544:3;9540:12;9533:19;;9192:366;;;:::o;9564:419::-;9730:4;9768:2;9757:9;9753:18;9745:26;;9817:9;9811:4;9807:20;9803:1;9792:9;9788:17;9781:47;9845:131;9971:4;9845:131;:::i;:::-;9837:139;;9564:419;;;:::o;9989:182::-;10129:34;10125:1;10117:6;10113:14;10106:58;9989:182;:::o;10177:366::-;10319:3;10340:67;10404:2;10399:3;10340:67;:::i;:::-;10333:74;;10416:93;10505:3;10416:93;:::i;:::-;10534:2;10529:3;10525:12;10518:19;;10177:366;;;:::o;10549:419::-;10715:4;10753:2;10742:9;10738:18;10730:26;;10802:9;10796:4;10792:20;10788:1;10777:9;10773:17;10766:47;10830:131;10956:4;10830:131;:::i;:::-;10822:139;;10549:419;;;:::o;10974:181::-;11114:33;11110:1;11102:6;11098:14;11091:57;10974:181;:::o;11161:366::-;11303:3;11324:67;11388:2;11383:3;11324:67;:::i;:::-;11317:74;;11400:93;11489:3;11400:93;:::i;:::-;11518:2;11513:3;11509:12;11502:19;;11161:366;;;:::o;11533:419::-;11699:4;11737:2;11726:9;11722:18;11714:26;;11786:9;11780:4;11776:20;11772:1;11761:9;11757:17;11750:47;11814:131;11940:4;11814:131;:::i;:::-;11806:139;;11533:419;;;:::o;11958:221::-;12098:34;12094:1;12086:6;12082:14;12075:58;12167:4;12162:2;12154:6;12150:15;12143:29;11958:221;:::o;12185:366::-;12327:3;12348:67;12412:2;12407:3;12348:67;:::i;:::-;12341:74;;12424:93;12513:3;12424:93;:::i;:::-;12542:2;12537:3;12533:12;12526:19;;12185:366;;;:::o;12557:419::-;12723:4;12761:2;12750:9;12746:18;12738:26;;12810:9;12804:4;12800:20;12796:1;12785:9;12781:17;12774:47;12838:131;12964:4;12838:131;:::i;:::-;12830:139;;12557:419;;;:::o;12982:174::-;13122:26;13118:1;13110:6;13106:14;13099:50;12982:174;:::o;13162:366::-;13304:3;13325:67;13389:2;13384:3;13325:67;:::i;:::-;13318:74;;13401:93;13490:3;13401:93;:::i;:::-;13519:2;13514:3;13510:12;13503:19;;13162:366;;;:::o;13534:419::-;13700:4;13738:2;13727:9;13723:18;13715:26;;13787:9;13781:4;13777:20;13773:1;13762:9;13758:17;13751:47;13815:131;13941:4;13815:131;:::i;:::-;13807:139;;13534:419;;;:::o;13959:175::-;14099:27;14095:1;14087:6;14083:14;14076:51;13959:175;:::o;14140:366::-;14282:3;14303:67;14367:2;14362:3;14303:67;:::i;:::-;14296:74;;14379:93;14468:3;14379:93;:::i;:::-;14497:2;14492:3;14488:12;14481:19;;14140:366;;;:::o;14512:419::-;14678:4;14716:2;14705:9;14701:18;14693:26;;14765:9;14759:4;14755:20;14751:1;14740:9;14736:17;14729:47;14793:131;14919:4;14793:131;:::i;:::-;14785:139;;14512:419;;;:::o;14937:174::-;15077:26;15073:1;15065:6;15061:14;15054:50;14937:174;:::o;15117:366::-;15259:3;15280:67;15344:2;15339:3;15280:67;:::i;:::-;15273:74;;15356:93;15445:3;15356:93;:::i;:::-;15474:2;15469:3;15465:12;15458:19;;15117:366;;;:::o;15489:419::-;15655:4;15693:2;15682:9;15678:18;15670:26;;15742:9;15736:4;15732:20;15728:1;15717:9;15713:17;15706:47;15770:131;15896:4;15770:131;:::i;:::-;15762:139;;15489:419;;;:::o;15914:332::-;16035:4;16073:2;16062:9;16058:18;16050:26;;16086:71;16154:1;16143:9;16139:17;16130:6;16086:71;:::i;:::-;16167:72;16235:2;16224:9;16220:18;16211:6;16167:72;:::i;:::-;15914:332;;;;;:::o;16252:137::-;16306:5;16337:6;16331:13;16322:22;;16353:30;16377:5;16353:30;:::i;:::-;16252:137;;;;:::o;16395:345::-;16462:6;16511:2;16499:9;16490:7;16486:23;16482:32;16479:119;;;16517:79;;:::i;:::-;16479:119;16637:1;16662:61;16715:7;16706:6;16695:9;16691:22;16662:61;:::i;:::-;16652:71;;16608:125;16395:345;;;;:::o;16746:174::-;16886:26;16882:1;16874:6;16870:14;16863:50;16746:174;:::o;16926:366::-;17068:3;17089:67;17153:2;17148:3;17089:67;:::i;:::-;17082:74;;17165:93;17254:3;17165:93;:::i;:::-;17283:2;17278:3;17274:12;17267:19;;16926:366;;;:::o;17298:419::-;17464:4;17502:2;17491:9;17487:18;17479:26;;17551:9;17545:4;17541:20;17537:1;17526:9;17522:17;17515:47;17579:131;17705:4;17579:131;:::i;:::-;17571:139;;17298:419;;;:::o;17723:300::-;17863:34;17859:1;17851:6;17847:14;17840:58;17932:34;17927:2;17919:6;17915:15;17908:59;18001:14;17996:2;17988:6;17984:15;17977:39;17723:300;:::o;18029:366::-;18171:3;18192:67;18256:2;18251:3;18192:67;:::i;:::-;18185:74;;18268:93;18357:3;18268:93;:::i;:::-;18386:2;18381:3;18377:12;18370:19;;18029:366;;;:::o;18401:419::-;18567:4;18605:2;18594:9;18590:18;18582:26;;18654:9;18648:4;18644:20;18640:1;18629:9;18625:17;18618:47;18682:131;18808:4;18682:131;:::i;:::-;18674:139;;18401:419;;;:::o;18826:225::-;18966:34;18962:1;18954:6;18950:14;18943:58;19035:8;19030:2;19022:6;19018:15;19011:33;18826:225;:::o;19057:366::-;19199:3;19220:67;19284:2;19279:3;19220:67;:::i;:::-;19213:74;;19296:93;19385:3;19296:93;:::i;:::-;19414:2;19409:3;19405:12;19398:19;;19057:366;;;:::o;19429:419::-;19595:4;19633:2;19622:9;19618:18;19610:26;;19682:9;19676:4;19672:20;19668:1;19657:9;19653:17;19646:47;19710:131;19836:4;19710:131;:::i;:::-;19702:139;;19429:419;;;:::o;19854:223::-;19994:34;19990:1;19982:6;19978:14;19971:58;20063:6;20058:2;20050:6;20046:15;20039:31;19854:223;:::o;20083:366::-;20225:3;20246:67;20310:2;20305:3;20246:67;:::i;:::-;20239:74;;20322:93;20411:3;20322:93;:::i;:::-;20440:2;20435:3;20431:12;20424:19;;20083:366;;;:::o;20455:419::-;20621:4;20659:2;20648:9;20644:18;20636:26;;20708:9;20702:4;20698:20;20694:1;20683:9;20679:17;20672:47;20736:131;20862:4;20736:131;:::i;:::-;20728:139;;20455:419;;;:::o;20880:221::-;21020:34;21016:1;21008:6;21004:14;20997:58;21089:4;21084:2;21076:6;21072:15;21065:29;20880:221;:::o;21107:366::-;21249:3;21270:67;21334:2;21329:3;21270:67;:::i;:::-;21263:74;;21346:93;21435:3;21346:93;:::i;:::-;21464:2;21459:3;21455:12;21448:19;;21107:366;;;:::o;21479:419::-;21645:4;21683:2;21672:9;21668:18;21660:26;;21732:9;21726:4;21722:20;21718:1;21707:9;21703:17;21696:47;21760:131;21886:4;21760:131;:::i;:::-;21752:139;;21479:419;;;:::o;21904:224::-;22044:34;22040:1;22032:6;22028:14;22021:58;22113:7;22108:2;22100:6;22096:15;22089:32;21904:224;:::o;22134:366::-;22276:3;22297:67;22361:2;22356:3;22297:67;:::i;:::-;22290:74;;22373:93;22462:3;22373:93;:::i;:::-;22491:2;22486:3;22482:12;22475:19;;22134:366;;;:::o;22506:419::-;22672:4;22710:2;22699:9;22695:18;22687:26;;22759:9;22753:4;22749:20;22745:1;22734:9;22730:17;22723:47;22787:131;22913:4;22787:131;:::i;:::-;22779:139;;22506:419;;;:::o;22931:222::-;23071:34;23067:1;23059:6;23055:14;23048:58;23140:5;23135:2;23127:6;23123:15;23116:30;22931:222;:::o;23159:366::-;23301:3;23322:67;23386:2;23381:3;23322:67;:::i;:::-;23315:74;;23398:93;23487:3;23398:93;:::i;:::-;23516:2;23511:3;23507:12;23500:19;;23159:366;;;:::o;23531:419::-;23697:4;23735:2;23724:9;23720:18;23712:26;;23784:9;23778:4;23774:20;23770:1;23759:9;23755:17;23748:47;23812:131;23938:4;23812:131;:::i;:::-;23804:139;;23531:419;;;:::o;23956:228::-;24096:34;24092:1;24084:6;24080:14;24073:58;24165:11;24160:2;24152:6;24148:15;24141:36;23956:228;:::o;24190:366::-;24332:3;24353:67;24417:2;24412:3;24353:67;:::i;:::-;24346:74;;24429:93;24518:3;24429:93;:::i;:::-;24547:2;24542:3;24538:12;24531:19;;24190:366;;;:::o;24562:419::-;24728:4;24766:2;24755:9;24751:18;24743:26;;24815:9;24809:4;24805:20;24801:1;24790:9;24786:17;24779:47;24843:131;24969:4;24843:131;:::i;:::-;24835:139;;24562:419;;;:::o;24987:174::-;25127:26;25123:1;25115:6;25111:14;25104:50;24987:174;:::o;25167:366::-;25309:3;25330:67;25394:2;25389:3;25330:67;:::i;:::-;25323:74;;25406:93;25495:3;25406:93;:::i;:::-;25524:2;25519:3;25515:12;25508:19;;25167:366;;;:::o;25539:419::-;25705:4;25743:2;25732:9;25728:18;25720:26;;25792:9;25786:4;25782:20;25778:1;25767:9;25763:17;25756:47;25820:131;25946:4;25820:131;:::i;:::-;25812:139;;25539:419;;;:::o;25964:180::-;26012:77;26009:1;26002:88;26109:4;26106:1;26099:15;26133:4;26130:1;26123:15;26150:191;26190:4;26210:20;26228:1;26210:20;:::i;:::-;26205:25;;26244:20;26262:1;26244:20;:::i;:::-;26239:25;;26283:1;26280;26277:8;26274:34;;;26288:18;;:::i;:::-;26274:34;26333:1;26330;26326:9;26318:17;;26150:191;;;;:::o;26347:305::-;26387:3;26406:20;26424:1;26406:20;:::i;:::-;26401:25;;26440:20;26458:1;26440:20;:::i;:::-;26435:25;;26594:1;26526:66;26522:74;26519:1;26516:81;26513:107;;;26600:18;;:::i;:::-;26513:107;26644:1;26641;26637:9;26630:16;;26347:305;;;;:::o;26658:177::-;26798:29;26794:1;26786:6;26782:14;26775:53;26658:177;:::o;26841:366::-;26983:3;27004:67;27068:2;27063:3;27004:67;:::i;:::-;26997:74;;27080:93;27169:3;27080:93;:::i;:::-;27198:2;27193:3;27189:12;27182:19;;26841:366;;;:::o;27213:419::-;27379:4;27417:2;27406:9;27402:18;27394:26;;27466:9;27460:4;27456:20;27452:1;27441:9;27437:17;27430:47;27494:131;27620:4;27494:131;:::i;:::-;27486:139;;27213:419;;;:::o;27638:180::-;27686:77;27683:1;27676:88;27783:4;27780:1;27773:15;27807:4;27804:1;27797:15;27824:180;27872:77;27869:1;27862:88;27969:4;27966:1;27959:15;27993:4;27990:1;27983:15;28010:143;28067:5;28098:6;28092:13;28083:22;;28114:33;28141:5;28114:33;:::i;:::-;28010:143;;;;:::o;28159:351::-;28229:6;28278:2;28266:9;28257:7;28253:23;28249:32;28246:119;;;28284:79;;:::i;:::-;28246:119;28404:1;28429:64;28485:7;28476:6;28465:9;28461:22;28429:64;:::i;:::-;28419:74;;28375:128;28159:351;;;;:::o;28516:85::-;28561:7;28590:5;28579:16;;28516:85;;;:::o;28607:158::-;28665:9;28698:61;28716:42;28725:32;28751:5;28725:32;:::i;:::-;28716:42;:::i;:::-;28698:61;:::i;:::-;28685:74;;28607:158;;;:::o;28771:147::-;28866:45;28905:5;28866:45;:::i;:::-;28861:3;28854:58;28771:147;;:::o;28924:114::-;28991:6;29025:5;29019:12;29009:22;;28924:114;;;:::o;29044:184::-;29143:11;29177:6;29172:3;29165:19;29217:4;29212:3;29208:14;29193:29;;29044:184;;;;:::o;29234:132::-;29301:4;29324:3;29316:11;;29354:4;29349:3;29345:14;29337:22;;29234:132;;;:::o;29372:108::-;29449:24;29467:5;29449:24;:::i;:::-;29444:3;29437:37;29372:108;;:::o;29486:179::-;29555:10;29576:46;29618:3;29610:6;29576:46;:::i;:::-;29654:4;29649:3;29645:14;29631:28;;29486:179;;;;:::o;29671:113::-;29741:4;29773;29768:3;29764:14;29756:22;;29671:113;;;:::o;29820:732::-;29939:3;29968:54;30016:5;29968:54;:::i;:::-;30038:86;30117:6;30112:3;30038:86;:::i;:::-;30031:93;;30148:56;30198:5;30148:56;:::i;:::-;30227:7;30258:1;30243:284;30268:6;30265:1;30262:13;30243:284;;;30344:6;30338:13;30371:63;30430:3;30415:13;30371:63;:::i;:::-;30364:70;;30457:60;30510:6;30457:60;:::i;:::-;30447:70;;30303:224;30290:1;30287;30283:9;30278:14;;30243:284;;;30247:14;30543:3;30536:10;;29944:608;;;29820:732;;;;:::o;30558:831::-;30821:4;30859:3;30848:9;30844:19;30836:27;;30873:71;30941:1;30930:9;30926:17;30917:6;30873:71;:::i;:::-;30954:80;31030:2;31019:9;31015:18;31006:6;30954:80;:::i;:::-;31081:9;31075:4;31071:20;31066:2;31055:9;31051:18;31044:48;31109:108;31212:4;31203:6;31109:108;:::i;:::-;31101:116;;31227:72;31295:2;31284:9;31280:18;31271:6;31227:72;:::i;:::-;31309:73;31377:3;31366:9;31362:19;31353:6;31309:73;:::i;:::-;30558:831;;;;;;;;:::o;31395:227::-;31535:34;31531:1;31523:6;31519:14;31512:58;31604:10;31599:2;31591:6;31587:15;31580:35;31395:227;:::o;31628:366::-;31770:3;31791:67;31855:2;31850:3;31791:67;:::i;:::-;31784:74;;31867:93;31956:3;31867:93;:::i;:::-;31985:2;31980:3;31976:12;31969:19;;31628:366;;;:::o;32000:419::-;32166:4;32204:2;32193:9;32189:18;32181:26;;32253:9;32247:4;32243:20;32239:1;32228:9;32224:17;32217:47;32281:131;32407:4;32281:131;:::i;:::-;32273:139;;32000:419;;;:::o;32425:233::-;32464:3;32487:24;32505:5;32487:24;:::i;:::-;32478:33;;32533:66;32526:5;32523:77;32520:103;;32603:18;;:::i;:::-;32520:103;32650:1;32643:5;32639:13;32632:20;;32425:233;;;:::o;32664:180::-;32712:77;32709:1;32702:88;32809:4;32806:1;32799:15;32833:4;32830:1;32823:15;32850:185;32890:1;32907:20;32925:1;32907:20;:::i;:::-;32902:25;;32941:20;32959:1;32941:20;:::i;:::-;32936:25;;32980:1;32970:35;;32985:18;;:::i;:::-;32970:35;33027:1;33024;33020:9;33015:14;;32850:185;;;;:::o;33041:348::-;33081:7;33104:20;33122:1;33104:20;:::i;:::-;33099:25;;33138:20;33156:1;33138:20;:::i;:::-;33133:25;;33326:1;33258:66;33254:74;33251:1;33248:81;33243:1;33236:9;33229:17;33225:105;33222:131;;;33333:18;;:::i;:::-;33222:131;33381:1;33378;33374:9;33363:20;;33041:348;;;;:::o;33395:220::-;33535:34;33531:1;33523:6;33519:14;33512:58;33604:3;33599:2;33591:6;33587:15;33580:28;33395:220;:::o;33621:366::-;33763:3;33784:67;33848:2;33843:3;33784:67;:::i;:::-;33777:74;;33860:93;33949:3;33860:93;:::i;:::-;33978:2;33973:3;33969:12;33962:19;;33621:366;;;:::o;33993:419::-;34159:4;34197:2;34186:9;34182:18;34174:26;;34246:9;34240:4;34236:20;34232:1;34221:9;34217:17;34210:47;34274:131;34400:4;34274:131;:::i;:::-;34266:139;;33993:419;;;:::o
Swarm Source
ipfs://cb4b970b304aa9007f07703c6d3f23d476479ed0a3d257e9ea9e769972a46c0e
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.