More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 7,795 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Sell | 13315680 | 16 days ago | IN | 0 S | 0.00461748 | ||||
Sell | 11860795 | 23 days ago | IN | 0 S | 0.01381988 | ||||
Sell | 10275938 | 30 days ago | IN | 0 S | 0.01356613 | ||||
Sell | 10275461 | 30 days ago | IN | 0 S | 0.01373504 | ||||
Sell | 9423333 | 34 days ago | IN | 0 S | 0.01359143 | ||||
Sell | 8610781 | 37 days ago | IN | 0 S | 0.01420836 | ||||
Sell | 8610637 | 37 days ago | IN | 0 S | 0.01524569 | ||||
Sell | 8610412 | 37 days ago | IN | 0 S | 0.01393639 | ||||
Sell | 8610311 | 37 days ago | IN | 0 S | 0.01408476 | ||||
Sell | 8610224 | 37 days ago | IN | 0 S | 0.01460968 | ||||
Sell | 8610090 | 37 days ago | IN | 0 S | 0.01389008 | ||||
Sell | 8609935 | 37 days ago | IN | 0 S | 0.01431114 | ||||
Sell | 7404306 | 45 days ago | IN | 0 S | 0.00512526 | ||||
Buy | 6613090 | 51 days ago | IN | 0.5 S | 0.01403347 | ||||
Buy | 5618562 | 60 days ago | IN | 0.1 S | 0.02067821 | ||||
Sell | 4516128 | 68 days ago | IN | 0 S | 0.01310474 | ||||
Sell | 4288177 | 70 days ago | IN | 0 S | 0.02801998 | ||||
Sell | 4286738 | 70 days ago | IN | 0 S | 0.0087197 | ||||
Sell | 4147020 | 71 days ago | IN | 0 S | 0.02649064 | ||||
Sell | 4146944 | 71 days ago | IN | 0 S | 0.02625524 | ||||
Sell | 4146869 | 71 days ago | IN | 0 S | 0.02606692 | ||||
Sell | 4146681 | 71 days ago | IN | 0 S | 0.026114 | ||||
Sell | 4129961 | 71 days ago | IN | 0 S | 0.02766555 | ||||
Sell | 4129014 | 71 days ago | IN | 0 S | 0.02776158 | ||||
Buy | 3972280 | 72 days ago | IN | 0.5 S | 0.00828861 |
Latest 25 internal transactions (View All)
Parent Transaction Hash | Block | Age | From | To | Amount | |
---|---|---|---|---|---|---|
13315680 | 16 days ago | 0.09801 S | ||||
13315680 | 16 days ago | 0.00099 S | ||||
11860795 | 23 days ago | 107.68782966 S | ||||
11860795 | 23 days ago | 1.08775585 S | ||||
10275938 | 30 days ago | 281.98984757 S | ||||
10275938 | 30 days ago | 2.84838229 S | ||||
10275461 | 30 days ago | 357.72158331 S | ||||
10275461 | 30 days ago | 3.61334932 S | ||||
9423333 | 34 days ago | 0.30715384 S | ||||
9423333 | 34 days ago | 0.00310256 S | ||||
8610781 | 37 days ago | 0.54428201 S | ||||
8610781 | 37 days ago | 0.00549779 S | ||||
8610637 | 37 days ago | 2.25595596 S | ||||
8610637 | 37 days ago | 0.02278743 S | ||||
8610412 | 37 days ago | 0.35639544 S | ||||
8610412 | 37 days ago | 0.00359995 S | ||||
8610311 | 37 days ago | 0.98023489 S | ||||
8610311 | 37 days ago | 0.00990136 S | ||||
8610224 | 37 days ago | 1.98560743 S | ||||
8610224 | 37 days ago | 0.02005664 S | ||||
8610090 | 37 days ago | 1.96886279 S | ||||
8610090 | 37 days ago | 0.0198875 S | ||||
8609935 | 37 days ago | 0.63815764 S | ||||
8609935 | 37 days ago | 0.00644603 S | ||||
7404306 | 45 days ago | 196.02 S |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
BondingCurveManager
Compiler Version
v0.8.28+commit.7893614a
Optimization Enabled:
No with 200 runs
Other Settings:
paris EvmVersion
Contract Source Code (Solidity Standard Json-Input format)
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.20;import { BancorBondingCurve } from "./gate/BancorBondingCurve.sol";import "./BondingCurveToken.sol";import "./utils/owner/Ownable.sol";import "./interfaces/IUniswapV2Router02.sol";import "@openzeppelin/contracts/utils/ReentrancyGuard.sol";/*** @title BondingCurveManager* @dev Manages bonding curve tokens, allowing creation, buying, selling, and liquidity management.*/contract BondingCurveManager is Ownable, ReentrancyGuard {BancorBondingCurve private bancorFormula;IUniswapV2Router02 private uniRouter;struct TokenInfo {BondingCurveToken token;uint256 tokenbalance;uint256 ethBalance;bool isListed;}mapping(address => TokenInfo) public tokens;address[] public tokenList;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/Math.sol)pragma solidity ^0.8.20;import {Panic} from "../Panic.sol";import {SafeCast} from "./SafeCast.sol";/*** @dev Standard math utilities missing in the Solidity language.*/library Math {enum Rounding {Floor, // Toward negative infinityCeil, // Toward positive infinityTrunc, // Toward zeroExpand // Away from zero}/*** @dev Returns the addition of two unsigned integers, with an success flag (no overflow).*/function tryAdd(uint256 a, uint256 b) internal pure returns (bool success, uint256 result) {unchecked {uint256 c = a + b;if (c < a) return (false, 0);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/math/SafeCast.sol)// This file was procedurally generated from scripts/generate/templates/SafeCast.js.pragma solidity ^0.8.20;/*** @dev Wrappers over Solidity's uintXX/intXX/bool casting operators with added overflow* checks.** Downcasting from uint256/int256 in Solidity does not revert on overflow. This can* easily result in undesired exploitation or bugs, since developers usually* assume that overflows raise errors. `SafeCast` restores this intuition by* reverting the transaction when such 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 SafeCast {/*** @dev Value doesn't fit in an uint of `bits` size.*/error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value);/*** @dev An int value doesn't fit in an uint of `bits` size.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/Panic.sol)pragma solidity ^0.8.20;/*** @dev Helper library for emitting standardized panic codes.** ```solidity* contract Example {* using Panic for uint256;** // Use any of the declared internal constants* function foo() { Panic.GENERIC.panic(); }** // Alternatively* function foo() { Panic.panic(Panic.GENERIC); }* }* ```** Follows the list from https://github.com/ethereum/solidity/blob/v0.8.24/libsolutil/ErrorCodes.h[libsolutil].** _Available since v5.1._*/// slither-disable-next-line unused-statelibrary Panic {
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)pragma solidity ^0.8.20;/*** @dev Contract module that helps prevent reentrant calls to a function.** Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier* available, which can be applied to functions to make sure there are no nested* (reentrant) calls to them.** Note that because there is a single `nonReentrant` guard, functions marked as* `nonReentrant` may not call one another. This can be worked around by making* those functions `private`, and then adding `external` `nonReentrant` entry* points to them.** TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,* consider using {ReentrancyGuardTransient} instead.** TIP: If you would like to learn more about reentrancy and alternative ways* to protect against it, check out our blog post* https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].*/abstract contract ReentrancyGuard {// Booleans are more expensive than uint256 or any type that takes up a full
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.0;import "./utils/token/ERC20.sol";import "./utils/owner/Ownable.sol";import "./utils/token/extensions/ERC20Burnable.sol";contract BondingCurveToken is ERC20, ERC20Burnable, Ownable {uint256 private constant TOTAL_SUPPLY = 1_000_000_000 * 10**18;uint256 public constant TRADING_SUPPLY = 800_000_000 * 10**18;uint256 public constant LP_SUPPLY = 200_000_000 * 10**18;constructor(string memory name, string memory symbol) ERC20(name, symbol) {// Mint total supply to the contract itself_mint(address(this), TOTAL_SUPPLY);}function transferTradingSupply(address manager) external onlyOwner {// Transfer trading supply to the bonding curve manager_transfer(address(this), manager, TRADING_SUPPLY);}function transferLPSupply(address manager) external onlyOwner {// Transfer LP supply to the bonding curve manager_transfer(address(this), manager, LP_SUPPLY);}
12345678910111213141516171819202122232425// SPDX-License-Identifier: MITpragma solidity ^0.8.20;import "./BancorFormula.sol";import "prb-math/contracts/PRBMathSD59x18.sol";import "prb-math/contracts/PRBMathUD60x18.sol";// based on https://medium.com/relevant-community/bonding-curves-in-depth-intuition-parametrization-d3905a681e0acontract BancorBondingCurve is BancorFormula {using PRBMathSD59x18 for int256;using PRBMathUD60x18 for uint256;uint256 public immutable slope;uint32 public immutable reserveRatio;// reserveRatio = connectorWeight, but is scaled by MAX_WEIGHT (1000000)// also note that unscaled reserveRatio = 1 / (n+1), so a reserveRatio 1000000 means n=0, reserveRatio=2000000 means n=1, and so on// slope (denoted as m in the article) is only relevant when supply = 0. When supply is non-zero, the price for minting k tokens can be fullydetermined by current balance and supplyconstructor(uint256 _slope, uint32 _reserveRatio) {slope = _slope;reserveRatio = _reserveRatio;}// buy function/**
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.20;import "./Power.sol";import "@openzeppelin/contracts/utils/math/Math.sol";/*** @title Bancor formula by Bancor* @dev Modified from the original by Slava Balasanov* https://github.com/bancorprotocol/contracts* Split Power.sol out from BancorFormula.sol and replace SafeMath formulas with zeppelin's SafeMath* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements;* and to You under the Apache License, Version 2.0. "*/contract BancorFormula is Power {string public constant version = "0.3.1";uint32 public constant MAX_WEIGHT = 1000000;/*** @dev given a token supply, connector balance, weight and a deposit amount (in the connector token),* calculates the return for a given conversion (in the main token)** Formula:* Return = _supply * ((1 + _depositAmount / _connectorBalance) ^ (_connectorWeight / 1000000) - 1)** @param _supply token total supply
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MITpragma solidity ^0.8.20;// TODO: make this a library after constant uint256 array is supported/*** bancor formula by bancor* https://github.com/bancorprotocol/contracts* Modified from the original by Slava Balasanov* Split Power.sol out from BancorFormula.sol* Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements;* and to You under the Apache License, Version 2.0. "*/contract Power {uint256 private constant ONE = 1;uint32 private constant MAX_WEIGHT = 1000000;uint8 private constant MIN_PRECISION = 32;uint8 private constant MAX_PRECISION = 127;/**The values below depend on MAX_PRECISION. If you choose to change it:Apply the same change in file 'PrintIntScalingFactors.py', run it and paste the results below.*/uint256 private constant FIXED_1 = 0x080000000000000000000000000000000;uint256 private constant FIXED_2 = 0x100000000000000000000000000000000;
12345678910111213// SPDX-License-Identifier: MITpragma solidity ^0.8.0;interface IUniswapV2Router02 {function addLiquidityETH(address token,uint amountTokenDesired,uint amountTokenMin,uint amountETHMin,address to,uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);}
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol)pragma solidity ^0.8.0;import "../token/extensions/Context.sol";/*** @dev Contract module which provides a basic access control mechanism, where* there is an account (an owner) that can be granted exclusive access to* specific functions.** By default, the owner account will be the one that deploys the contract. This* can later be changed with {transferOwnership}.** This module is used through inheritance. It will make available the modifier* `onlyOwner`, which can be applied to your functions to restrict their use to* the owner.*/abstract contract Ownable is Context {address private _owner;event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);/*** @dev Initializes the contract setting the deployer as the initial owner.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)pragma solidity ^0.8.0;import "./IERC20.sol";import "./extensions/IERC20Metadata.sol";import "./extensions/Context.sol";/*** @dev Implementation of the {IERC20} interface.** This implementation is agnostic to the way tokens are created. This means* that a supply mechanism has to be added in a derived contract using {_mint}.* For a generic mechanism see {ERC20PresetMinterPauser}.** TIP: For a detailed writeup see our guide* https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How* to implement supply mechanisms].** The default value of {decimals} is 18. To change this, you should override* this function so it returns a different value.** We have followed general OpenZeppelin Contracts guidelines: functions revert* instead returning `false` on failure. This behavior is nonetheless* conventional and does not conflict with the expectations of ERC20
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.4) (utils/Context.sol)pragma solidity ^0.8.0;/*** @dev Provides information about the current execution context, including the* sender of the transaction and its data. While these are generally available* via msg.sender and msg.data, they should not be accessed in such a direct* manner, since when dealing with meta-transactions the account sending and* paying for execution may not be the actual sender (as far as an application* is concerned).** This contract is only required for intermediate, library-like contracts.*/abstract contract Context {function _msgSender() internal view virtual returns (address) {return msg.sender;}function _msgData() internal view virtual returns (bytes calldata) {return msg.data;}function _contextSuffixLength() internal view virtual returns (uint256) {return 0;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol)pragma solidity ^0.8.0;import "../ERC20.sol";import "./Context.sol";/*** @dev Extension of {ERC20} that allows token holders to destroy both their own* tokens and those that they have an allowance for, in a way that can be* recognized off-chain (via event analysis).*/abstract contract ERC20Burnable is Context, ERC20 {/*** @dev Destroys `amount` tokens from the caller.** See {ERC20-_burn}.*/function burn(uint256 amount) public virtual {_burn(_msgSender(), amount);}/*** @dev Destroys `amount` tokens from `account`, deducting from the caller's* allowance.
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)pragma solidity ^0.8.0;import "../IERC20.sol";/*** @dev Interface for the optional metadata functions from the ERC20 standard.** _Available since v4.1._*/interface IERC20Metadata is IERC20 {/*** @dev Returns the name of the token.*/function name() external view returns (string memory);/*** @dev Returns the symbol of the token.*/function symbol() external view returns (string memory);/*** @dev Returns the decimals places of the token.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: MIT// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)pragma solidity ^0.8.0;/*** @dev Interface of the ERC20 standard as defined in the EIP.*/interface IERC20 {/*** @dev Emitted when `value` tokens are moved from one account (`from`) to* another (`to`).** Note that `value` may be zero.*/event Transfer(address indexed from, address indexed to, uint256 value);/*** @dev Emitted when the allowance of a `spender` for an `owner` is set by* a call to {approve}. `value` is the new allowance.*/event Approval(address indexed owner, address indexed spender, uint256 value);/*** @dev Returns the amount of tokens in existence.*/
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.4;/// @notice Emitted when the result overflows uint256.error PRBMath__MulDivFixedPointOverflow(uint256 prod1);/// @notice Emitted when the result overflows uint256.error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator);/// @notice Emitted when one of the inputs is type(int256).min.error PRBMath__MulDivSignedInputTooSmall();/// @notice Emitted when the intermediary absolute result overflows int256.error PRBMath__MulDivSignedOverflow(uint256 rAbs);/// @notice Emitted when the input is MIN_SD59x18.error PRBMathSD59x18__AbsInputTooSmall();/// @notice Emitted when ceiling a number overflows SD59x18.error PRBMathSD59x18__CeilOverflow(int256 x);/// @notice Emitted when one of the inputs is MIN_SD59x18.error PRBMathSD59x18__DivInputTooSmall();/// @notice Emitted when one of the intermediary unsigned results overflows SD59x18.error PRBMathSD59x18__DivOverflow(uint256 rAbs);
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.4;import "./PRBMath.sol";/// @title PRBMathSD59x18/// @author Paul Razvan Berg/// @notice Smart contract library for advanced fixed-point math that works with int256 numbers considered to have 18/// trailing decimals. We call this number representation signed 59.18-decimal fixed-point, since the numbers can have/// a sign and there can be up to 59 digits in the integer part and up to 18 decimals in the fractional part. The numbers/// are bound by the minimum and the maximum values permitted by the Solidity type int256.library PRBMathSD59x18 {/// @dev log2(e) as a signed 59.18-decimal fixed-point number.int256 internal constant LOG2_E = 1_442695040888963407;/// @dev Half the SCALE number.int256 internal constant HALF_SCALE = 5e17;/// @dev The maximum value a signed 59.18-decimal fixed-point number can have.int256 internal constant MAX_SD59x18 =57896044618658097711785492504343953926634992332820282019728_792003956564819967;/// @dev The maximum whole value a signed 59.18-decimal fixed-point number can have.int256 internal constant MAX_WHOLE_SD59x18 =57896044618658097711785492504343953926634992332820282019728_000000000000000000;
1234567891011121314151617181920212223242526// SPDX-License-Identifier: Unlicensepragma solidity >=0.8.4;import "./PRBMath.sol";/// @title PRBMathUD60x18/// @author Paul Razvan Berg/// @notice Smart contract library for advanced fixed-point math that works with uint256 numbers considered to have 18/// trailing decimals. We call this number representation unsigned 60.18-decimal fixed-point, since there can be up to 60/// digits in the integer part and up to 18 decimals in the fractional part. The numbers are bound by the minimum and the/// maximum values permitted by the Solidity type uint256.library PRBMathUD60x18 {/// @dev Half the SCALE number.uint256 internal constant HALF_SCALE = 5e17;/// @dev log2(e) as an unsigned 60.18-decimal fixed-point number.uint256 internal constant LOG2_E = 1_442695040888963407;/// @dev The maximum value an unsigned 60.18-decimal fixed-point number can have.uint256 internal constant MAX_UD60x18 =115792089237316195423570985008687907853269984665640564039457_584007913129639935;/// @dev The maximum whole value an unsigned 60.18-decimal fixed-point number can have.uint256 internal constant MAX_WHOLE_UD60x18 =115792089237316195423570985008687907853269984665640564039457_000000000000000000;
12345678910111213141516171819{"evmVersion": "paris","optimizer": {"enabled": false,"runs": 200},"outputSelection": {"*": {"*": ["evm.bytecode","evm.deployedBytecode","devdoc","userdoc","metadata","abi"]}}}
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_uniRouter","type":"address"},{"internalType":"address","name":"_bancorFormula","type":"address"},{"internalType":"address payable","name":"_feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"FailedToSendEth","type":"error"},{"inputs":[],"name":"InsufficientPoolbalance","type":"error"},{"inputs":[],"name":"InvalidLpFeePercentage","type":"error"},{"inputs":[],"name":"InvalidRecipient","type":"error"},{"inputs":[],"name":"MaxPoolBalanceReached","type":"error"},{"inputs":[],"name":"PairCreationFailed","type":"error"},{"inputs":[],"name":"ReentrancyGuardReentrantCall","type":"error"},{"inputs":[],"name":"TokenAlreadyListed","type":"error"},{"inputs":[],"name":"TokenDoesNotExist","type":"error"},{"inputs":[],"name":"TokenTransferFailed","type":"error"},{"inputs":[],"name":"ZeroEthSent","type":"error"},{"inputs":[],"name":"ZeroTokenAmount","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"LiquidityAdded","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":"tokenAddress","type":"address"},{"indexed":true,"internalType":"address","name":"creator","type":"address"},{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"string","name":"symbol","type":"string"}],"name":"TokenCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"buyer","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"TokensBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":true,"internalType":"address","name":"seller","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"TokensSold","type":"event"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"addLP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"buy","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"calculateCurvedBuyReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"calculateCurvedSellReturn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"name":"create","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getCurrentTokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getMarketCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"}],"name":"getTokenEthBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}],"name":"sell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_bancorFormula","type":"address"}],"name":"setBancorFormula","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newRecipient","type":"address"}],"name":"setFeeRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpFeePercentage","type":"uint256"}],"name":"setLpFeePercentage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxPoolBalance","type":"uint256"}],"name":"setMaxPoolBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniRouter","type":"address"}],"name":"setUniRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenList","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tokens","outputs":[{"internalType":"contract BondingCurveToken","name":"token","type":"address"},{"internalType":"uint256","name":"tokenbalance","type":"uint256"},{"internalType":"uint256","name":"ethBalance","type":"uint256"},{"internalType":"bool","name":"isListed","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
60a060405266b1a2bc2ec500006006556903120bec57b51c10000060075561dead73ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff1681525034801561005e57600080fd5b5060405161603c38038061603c833981810160405281019061008091906102db565b61009c61009161016e60201b60201c565b61017660201b60201c565b6001808190555082600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505061032e565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061026a8261023f565b9050919050565b61027a8161025f565b811461028557600080fd5b50565b60008151905061029781610271565b92915050565b60006102a88261023f565b9050919050565b6102b88161029d565b81146102c357600080fd5b50565b6000815190506102d5816102af565b92915050565b6000806000606084860312156102f4576102f361023a565b5b600061030286828701610288565b935050602061031386828701610288565b9250506040610324868287016102c6565b9150509250925092565b608051615cf36103496000396000612ed00152615cf36000f3fe6080604052600436106101185760003560e01c80638e72b23f116100a0578063e486033911610064578063e4860339146103bd578063e74b981b146103fd578063ee4e268714610426578063f088d5471461044f578063f2fde38b1461046b5761011f565b80638e72b23f146102b45780639ead7222146102dd578063be33f6bd1461031a578063d146d31d14610357578063ddf731f3146103945761011f565b80636c197ff5116100e75780636c197ff5146101f7578063715018a61461022057806376f728d814610237578063880af793146102605780638da5cb5b146102895761011f565b806309f72da314610124578063198e2b8a1461016157806331f3efba1461017d57806341528e72146101ba5761011f565b3661011f57005b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906130d0565b610494565b6040516101589190613116565b60405180910390f35b61017b60048036038101906101769190613196565b610656565b005b34801561018957600080fd5b506101a4600480360381019061019f9190613243565b6109f7565b6040516101b19190613116565b60405180910390f35b3480156101c657600080fd5b506101e160048036038101906101dc91906130d0565b610cb1565b6040516101ee9190613116565b60405180910390f35b34801561020357600080fd5b5061021e60048036038101906102199190613243565b610cfd565b005b34801561022c57600080fd5b506102356112b6565b005b34801561024357600080fd5b5061025e60048036038101906102599190613283565b6112ca565b005b34801561026c57600080fd5b5061028760048036038101906102829190613283565b6112dc565b005b34801561029557600080fd5b5061029e61132f565b6040516102ab91906132bf565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d691906130d0565b611358565b005b3480156102e957600080fd5b5061030460048036038101906102ff9190613283565b6113a4565b60405161031191906132bf565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190613243565b6113e3565b60405161034e9190613116565b60405180910390f35b34801561036357600080fd5b5061037e600480360381019061037991906130d0565b61169d565b60405161038b9190613116565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b691906130d0565b61187e565b005b3480156103c957600080fd5b506103e460048036038101906103df91906130d0565b6119bf565b6040516103f49493929190613354565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f91906133d7565b611a1c565b005b34801561043257600080fd5b5061044d600480360381019061044891906130d0565b611ace565b005b610469600480360381019061046491906130d0565b611b1a565b005b34801561047757600080fd5b50610492600480360381019061048d91906130d0565b612268565b005b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610567576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff16156105b0576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826002015490506000836001015490506000818473ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190613419565b61063e9190613475565b905061064a83826122eb565b95505050505050919050565b61065e6123c9565b6000848484846040516106709061305b565b61067d9493929190613507565b604051809103906000f080158015610699573d6000803e3d6000fd5b509050600081905060405180608001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160001515815250600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663aa60b06b306040518263ffffffff1660e01b815260040161083691906132bf565b600060405180830381600087803b15801561085057600080fd5b505af1158015610864573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108a391906132bf565b602060405180830381865afa1580156108c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e49190613419565b905060008103610920576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fd5d05a8421149c74fd223cfc823befb883babf9bf0b0e4d6bf9c8fdb70e59bb4898989896040516109ca9493929190613507565b60405180910390a360003411156109e6576109e5823461240f565b5b5050506109f16129a6565b50505050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600201549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ad3576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260030160009054906101000a900460ff1615610b1c576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008503610b56576040517f82c4a8c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001015490506000818473ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd19190613419565b610bdb9190613475565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d2dfa4a85848b6040518463ffffffff1660e01b8152600401610c3e93929190613542565b602060405180830381865afa158015610c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7f9190613419565b90506000610c9482662386f26fc100006129af565b90508082610ca29190613475565b97505050505050505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b610d056123c9565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd7576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff1615610e20576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303610e5a576040517f82c4a8c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826002015490506000836001015490506000818473ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede9190613419565b610ee89190613475565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d2dfa4a85848a6040518463ffffffff1660e01b8152600401610f4b93929190613542565b602060405180830381865afa158015610f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8c9190613419565b90506000610fa182662386f26fc100006129af565b905060008183610fb19190613475565b905082861015610fed576040517ff8ffc0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82886002016000828254039250508190555088886001016000828254019250508190555060008211156110e1576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611062906135aa565b60006040518083038185875af1925050503d806000811461109f576040519150601f19603f3d011682016040523d82523d6000602084013e6110a4565b606091505b50509050806110df576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8673ffffffffffffffffffffffffffffffffffffffff166323b872dd33308c6040518463ffffffff1660e01b815260040161111e939291906135bf565b6020604051808303816000875af115801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190613622565b611197576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16826040516111bd906135aa565b60006040518083038185875af1925050503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b505090508061123a576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f697c42d55a5e1fed3f464ec6f38b32546a0bd368dc8068b065c67566d73f32908c8560405161129992919061364f565b60405180910390a35050505050505050506112b26129a6565b5050565b6112be6129d8565b6112c86000612a56565b565b6112d26129d8565b8060078190555050565b6112e46129d8565b66b1a2bc2ec50000811115611325576040517fc99a8b3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113606129d8565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600581815481106113b457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b6576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff16156114ff576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403611539576040517fa096c83800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600201549050600061155586662386f26fc100006129af565b9050600081876115659190613475565b90506000856001015490506000818673ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e29190613419565b6115ec9190613475565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388dc87438683866040518463ffffffff1660e01b815260040161164d93929190613542565b602060405180830381865afa15801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e9190613419565b97505050505050505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611770576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff16156117b9576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826001015490506000818373ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118349190613419565b61183e9190613475565b9050600061184b87610494565b90506000670de0b6b3a764000082846118649190613678565b61186e91906136e9565b9050809650505050505050919050565b6118866129d8565b61188e6123c9565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611960576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff16156119a9576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b283612b1a565b50506119bc6129a6565b50565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b611a246129d8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8a576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad66129d8565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b226123c9565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf4576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff1615611c3d576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003403611c77576040517fa096c83800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260020154905060008160075411611c92576000611ca1565b81600754611ca09190613475565b5b905060008103611cdd576040517f9876e37400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001015490506000818573ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d589190613419565b611d629190613475565b90506000662386f26fc10000670de0b6b3a7640000611d819190613475565b9050600081670de0b6b3a764000086611d9a9190613678565b611da491906136e9565b90506000813411611db55734611db7565b815b90506000611dcc82662386f26fc100006129af565b905060008183611ddc9190613475565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388dc87438b89856040518463ffffffff1660e01b8152600401611e3f93929190613542565b602060405180830381865afa158015611e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e809190613419565b905087811115611f5157879050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a32926c8b89846040518463ffffffff1660e01b8152600401611eec93929190613542565b602060405180830381865afa158015611f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2d9190613419565b9150611f4082662386f26fc100006129af565b92508282611f4e919061371a565b93505b818a611f5d919061371a565b8c60020181905550808c6001016000828254611f799190613475565b925050819055506000831115612050576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051611fd1906135aa565b60006040518083038185875af1925050503d806000811461200e576040519150601f19603f3d011682016040523d82523d6000602084013e612013565b606091505b505090508061204e576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8a73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161208b92919061374e565b6020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613622565b612104576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000843411612114576000612121565b84346121209190613475565b5b905060008111156121d15760003373ffffffffffffffffffffffffffffffffffffffff1682604051612152906135aa565b60006040518083038185875af1925050503d806000811461218f576040519150601f19603f3d011682016040523d82523d6000602084013e612194565b606091505b50509050806121cf576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b3373ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff167fc244d500136edffae7025aaf7fbd7a07193ac544a1d0cc3132cf2a32452d340c858560405161223092919061364f565b60405180910390a36122418d613014565b156122505761224f8e612b1a565b5b505050505050505050505050506122656129a6565b50565b6122706129d8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d6906137e9565b60405180910390fd5b6122e881612a56565b50565b600080670de0b6b3a764000090506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a32926c8686856040518463ffffffff1660e01b815260040161235a93929190613542565b602060405180830381865afa158015612377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239b9190613419565b905060006123b082662386f26fc100006129af565b905080826123be9190613475565b935050505092915050565b600260015403612405576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000826002015490506000836001015490506000818473ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ff9190613419565b6125099190613475565b9050600061251e87662386f26fc100006129af565b90506000818861252e9190613475565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388dc87438786856040518463ffffffff1660e01b815260040161259193929190613542565b602060405180830381865afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d29190613419565b90508481111561269557849050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a32926c8786846040518463ffffffff1660e01b815260040161263e93929190613542565b602060405180830381865afa15801561265b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267f9190613419565b915061269282662386f26fc100006129af565b92505b818860020160008282546126a9919061371a565b92505081905550808860010160008282546126c49190613475565b92505081905550600083111561279b576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161271c906135aa565b60006040518083038185875af1925050503d8060008114612759576040519150601f19603f3d011682016040523d82523d6000602084013e61275e565b606091505b5050905080612799576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016127d692919061374e565b6020604051808303816000875af11580156127f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128199190613622565b61284f576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838361285d919061371a565b8a1161286a576000612882565b8383612876919061371a565b8a6128819190613475565b5b905060008111156129325760003373ffffffffffffffffffffffffffffffffffffffff16826040516128b3906135aa565b60006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b5050905080612930576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fc244d500136edffae7025aaf7fbd7a07193ac544a1d0cc3132cf2a32452d340c858560405161299192919061364f565b60405180910390a35050505050505050505050565b60018081905550565b6000670de0b6b3a764000082846129c69190613678565b6129d091906136e9565b905092915050565b6129e0613053565b73ffffffffffffffffffffffffffffffffffffffff166129fe61132f565b73ffffffffffffffffffffffffffffffffffffffff1614612a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4b90613855565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160030160009054906101000a900460ff1615612bcf576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826002015490506000612be6826006546129af565b905060008183612bf69190613475565b90508373ffffffffffffffffffffffffffffffffffffffff16634f6ef09a306040518263ffffffff1660e01b8152600401612c3191906132bf565b600060405180830381600087803b158015612c4b57600080fd5b505af1158015612c5f573d6000803e3d6000fd5b50505050600085600101548573ffffffffffffffffffffffffffffffffffffffff1663670171fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd99190613419565b612ce3919061371a565b9050600086600101819055506000866002018190555060018660030160006101000a81548160ff0219169083151502179055506000831115612de6576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612d67906135aa565b60006040518083038185875af1925050503d8060008114612da4576040519150601f19603f3d011682016040523d82523d6000602084013e612da9565b606091505b5050905080612de4576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612e4392919061374e565b6020604051808303816000875af1158015612e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e869190613622565b50600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719858b866000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b8152600401612f11969594939291906138b0565b60606040518083038185885af1158015612f2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f549190613911565b50915091508673ffffffffffffffffffffffffffffffffffffffff1663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fa157600080fd5b505af1158015612fb5573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff167fac1d76749e5447b7b16f5ab61447e1bd502f3bb4807af3b28e620d1700a6ee45828460405161300192919061364f565b60405180910390a2505050505050505050565b600080606460636007546130289190613678565b61303291906136e9565b905060008360010154148061304b575080836002015410155b915050919050565b600033905090565b6123598061396583390190565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061309d82613072565b9050919050565b6130ad81613092565b81146130b857600080fd5b50565b6000813590506130ca816130a4565b92915050565b6000602082840312156130e6576130e5613068565b5b60006130f4848285016130bb565b91505092915050565b6000819050919050565b613110816130fd565b82525050565b600060208201905061312b6000830184613107565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261315657613155613131565b5b8235905067ffffffffffffffff81111561317357613172613136565b5b60208301915083600182028301111561318f5761318e61313b565b5b9250929050565b600080600080604085870312156131b0576131af613068565b5b600085013567ffffffffffffffff8111156131ce576131cd61306d565b5b6131da87828801613140565b9450945050602085013567ffffffffffffffff8111156131fd576131fc61306d565b5b61320987828801613140565b925092505092959194509250565b613220816130fd565b811461322b57600080fd5b50565b60008135905061323d81613217565b92915050565b6000806040838503121561325a57613259613068565b5b6000613268858286016130bb565b92505060206132798582860161322e565b9150509250929050565b60006020828403121561329957613298613068565b5b60006132a78482850161322e565b91505092915050565b6132b981613092565b82525050565b60006020820190506132d460008301846132b0565b92915050565b6000819050919050565b60006132ff6132fa6132f584613072565b6132da565b613072565b9050919050565b6000613311826132e4565b9050919050565b600061332382613306565b9050919050565b61333381613318565b82525050565b60008115159050919050565b61334e81613339565b82525050565b6000608082019050613369600083018761332a565b6133766020830186613107565b6133836040830185613107565b6133906060830184613345565b95945050505050565b60006133a482613072565b9050919050565b6133b481613399565b81146133bf57600080fd5b50565b6000813590506133d1816133ab565b92915050565b6000602082840312156133ed576133ec613068565b5b60006133fb848285016133c2565b91505092915050565b60008151905061341381613217565b92915050565b60006020828403121561342f5761342e613068565b5b600061343d84828501613404565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613480826130fd565b915061348b836130fd565b92508282039050818111156134a3576134a2613446565b5b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b60006134e683856134a9565b93506134f38385846134ba565b6134fc836134c9565b840190509392505050565b600060408201905081810360008301526135228186886134da565b905081810360208301526135378184866134da565b905095945050505050565b60006060820190506135576000830186613107565b6135646020830185613107565b6135716040830184613107565b949350505050565b600081905092915050565b50565b6000613594600083613579565b915061359f82613584565b600082019050919050565b60006135b582613587565b9150819050919050565b60006060820190506135d460008301866132b0565b6135e160208301856132b0565b6135ee6040830184613107565b949350505050565b6135ff81613339565b811461360a57600080fd5b50565b60008151905061361c816135f6565b92915050565b60006020828403121561363857613637613068565b5b60006136468482850161360d565b91505092915050565b60006040820190506136646000830185613107565b6136716020830184613107565b9392505050565b6000613683826130fd565b915061368e836130fd565b925082820261369c816130fd565b915082820484148315176136b3576136b2613446565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136f4826130fd565b91506136ff836130fd565b92508261370f5761370e6136ba565b5b828204905092915050565b6000613725826130fd565b9150613730836130fd565b925082820190508082111561374857613747613446565b5b92915050565b600060408201905061376360008301856132b0565b6137706020830184613107565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137d36026836134a9565b91506137de82613777565b604082019050919050565b60006020820190508181036000830152613802816137c6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061383f6020836134a9565b915061384a82613809565b602082019050919050565b6000602082019050818103600083015261386e81613832565b9050919050565b6000819050919050565b600061389a61389561389084613875565b6132da565b6130fd565b9050919050565b6138aa8161387f565b82525050565b600060c0820190506138c560008301896132b0565b6138d26020830188613107565b6138df60408301876138a1565b6138ec60608301866138a1565b6138f960808301856132b0565b61390660a0830184613107565b979650505050505050565b60008060006060848603121561392a57613929613068565b5b600061393886828701613404565b935050602061394986828701613404565b925050604061395a86828701613404565b915050925092509256fe608060405234801561001057600080fd5b5060405161235938038061235983398181016040528101906100329190610444565b8181816003908161004391906106dd565b50806004908161005391906106dd565b50505061007261006761009560201b60201c565b61009d60201b60201c565b61008e306b033b2e3c9fd0803ce800000061016360201b60201c565b50506108b9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c99061080c565b60405180910390fd5b6101e4600083836102c560201b60201c565b80600260008282546101f6919061085b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516102a7919061089e565b60405180910390a36102c1600083836102ca60201b60201c565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610336826102ed565b810181811067ffffffffffffffff82111715610355576103546102fe565b5b80604052505050565b60006103686102cf565b9050610374828261032d565b919050565b600067ffffffffffffffff821115610394576103936102fe565b5b61039d826102ed565b9050602081019050919050565b60005b838110156103c85780820151818401526020810190506103ad565b60008484015250505050565b60006103e76103e284610379565b61035e565b905082815260208101848484011115610403576104026102e8565b5b61040e8482856103aa565b509392505050565b600082601f83011261042b5761042a6102e3565b5b815161043b8482602086016103d4565b91505092915050565b6000806040838503121561045b5761045a6102d9565b5b600083015167ffffffffffffffff811115610479576104786102de565b5b61048585828601610416565b925050602083015167ffffffffffffffff8111156104a6576104a56102de565b5b6104b285828601610416565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061050e57607f821691505b602082108103610521576105206104c7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261054c565b610593868361054c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006105da6105d56105d0846105ab565b6105b5565b6105ab565b9050919050565b6000819050919050565b6105f4836105bf565b610608610600826105e1565b848454610559565b825550505050565b600090565b61061d610610565b6106288184846105eb565b505050565b5b8181101561064c57610641600082610615565b60018101905061062e565b5050565b601f8211156106915761066281610527565b61066b8461053c565b8101602085101561067a578190505b61068e6106868561053c565b83018261062d565b50505b505050565b600082821c905092915050565b60006106b460001984600802610696565b1980831691505092915050565b60006106cd83836106a3565b9150826002028217905092915050565b6106e6826104bc565b67ffffffffffffffff8111156106ff576106fe6102fe565b5b61070982546104f6565b610714828285610650565b600060209050601f8311600181146107475760008415610735578287015190505b61073f85826106c1565b8655506107a7565b601f19841661075586610527565b60005b8281101561077d57848901518255600182019150602085019450602081019050610758565b8683101561079a5784890151610796601f8916826106a3565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006107f6601f836107af565b9150610801826107c0565b602082019050919050565b60006020820190508181036000830152610825816107e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610866826105ab565b9150610871836105ab565b92508282019050808211156108895761088861082c565b5b92915050565b610898816105ab565b82525050565b60006020820190506108b3600083018461088f565b92915050565b611a91806108c86000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d714610321578063a9059cbb14610351578063aa60b06b14610381578063dd62ed3e1461039d578063f2fde38b146103cd5761012c565b806370a082311461028f578063715018a6146102bf57806379cc6790146102c95780638da5cb5b146102e557806395d89b41146103035761012c565b806339509351116100f457806339509351146101eb57806342966c681461021b5780634c0abcdb146102375780634f6ef09a14610255578063670171fd146102715761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103e9565b60405161014691906110f5565b60405180910390f35b610169600480360381019061016491906111b0565b61047b565b604051610176919061120b565b60405180910390f35b61018761049e565b6040516101949190611235565b60405180910390f35b6101b760048036038101906101b29190611250565b6104a8565b6040516101c4919061120b565b60405180910390f35b6101d56104d7565b6040516101e291906112bf565b60405180910390f35b610205600480360381019061020091906111b0565b6104e0565b604051610212919061120b565b60405180910390f35b610235600480360381019061023091906112da565b610517565b005b61023f61052b565b60405161024c9190611235565b60405180910390f35b61026f600480360381019061026a9190611307565b61053b565b005b61027961055c565b6040516102869190611235565b60405180910390f35b6102a960048036038101906102a49190611307565b61056b565b6040516102b69190611235565b60405180910390f35b6102c76105b3565b005b6102e360048036038101906102de91906111b0565b6105c7565b005b6102ed6105d5565b6040516102fa9190611343565b60405180910390f35b61030b6105ff565b60405161031891906110f5565b60405180910390f35b61033b600480360381019061033691906111b0565b610691565b604051610348919061120b565b60405180910390f35b61036b600480360381019061036691906111b0565b610708565b604051610378919061120b565b60405180910390f35b61039b60048036038101906103969190611307565b61072b565b005b6103b760048036038101906103b2919061135e565b61074d565b6040516103c49190611235565b60405180910390f35b6103e760048036038101906103e29190611307565b6107d4565b005b6060600380546103f8906113cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610424906113cd565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b600080610486610857565b905061049381858561085f565b600191505092915050565b6000600254905090565b6000806104b3610857565b90506104c0858285610a28565b6104cb858585610ab4565b60019150509392505050565b60006012905090565b6000806104eb610857565b905061050c8185856104fd858961074d565b610507919061142d565b61085f565b600191505092915050565b610528610522610857565b82610d2a565b50565b6b0295be96e64066972000000081565b610543610ef7565b61055930826aa56fa5b99019a5c8000000610ab4565b50565b6aa56fa5b99019a5c800000081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105bb610ef7565b6105c56000610f75565b565b6105d1828261103b565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461060e906113cd565b80601f016020809104026020016040519081016040528092919081815260200182805461063a906113cd565b80156106875780601f1061065c57610100808354040283529160200191610687565b820191906000526020600020905b81548152906001019060200180831161066a57829003601f168201915b5050505050905090565b60008061069c610857565b905060006106aa828661074d565b9050838110156106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e6906114d3565b60405180910390fd5b6106fc828686840361085f565b60019250505092915050565b600080610713610857565b9050610720818585610ab4565b600191505092915050565b610733610ef7565b61074a30826b0295be96e640669720000000610ab4565b50565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107dc610ef7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084290611565565b60405180910390fd5b61085481610f75565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c5906115f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490611689565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a1b9190611235565b60405180910390a3505050565b6000610a34848461074d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aae5781811015610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a97906116f5565b60405180910390fd5b610aad848484840361085f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90611787565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990611819565b60405180910390fd5b610b9d83838361105b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1a906118ab565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d119190611235565b60405180910390a3610d24848484611060565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d909061193d565b60405180910390fd5b610da58260008361105b565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e22906119cf565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ede9190611235565b60405180910390a3610ef283600084611060565b505050565b610eff610857565b73ffffffffffffffffffffffffffffffffffffffff16610f1d6105d5565b73ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90611a3b565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61104d82611047610857565b83610a28565b6110578282610d2a565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561109f578082015181840152602081019050611084565b60008484015250505050565b6000601f19601f8301169050919050565b60006110c782611065565b6110d18185611070565b93506110e1818560208601611081565b6110ea816110ab565b840191505092915050565b6000602082019050818103600083015261110f81846110bc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111478261111c565b9050919050565b6111578161113c565b811461116257600080fd5b50565b6000813590506111748161114e565b92915050565b6000819050919050565b61118d8161117a565b811461119857600080fd5b50565b6000813590506111aa81611184565b92915050565b600080604083850312156111c7576111c6611117565b5b60006111d585828601611165565b92505060206111e68582860161119b565b9150509250929050565b60008115159050919050565b611205816111f0565b82525050565b600060208201905061122060008301846111fc565b92915050565b61122f8161117a565b82525050565b600060208201905061124a6000830184611226565b92915050565b60008060006060848603121561126957611268611117565b5b600061127786828701611165565b935050602061128886828701611165565b92505060406112998682870161119b565b9150509250925092565b600060ff82169050919050565b6112b9816112a3565b82525050565b60006020820190506112d460008301846112b0565b92915050565b6000602082840312156112f0576112ef611117565b5b60006112fe8482850161119b565b91505092915050565b60006020828403121561131d5761131c611117565b5b600061132b84828501611165565b91505092915050565b61133d8161113c565b82525050565b60006020820190506113586000830184611334565b92915050565b6000806040838503121561137557611374611117565b5b600061138385828601611165565b925050602061139485828601611165565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113e557607f821691505b6020821081036113f8576113f761139e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114388261117a565b91506114438361117a565b925082820190508082111561145b5761145a6113fe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006114bd602583611070565b91506114c882611461565b604082019050919050565b600060208201905081810360008301526114ec816114b0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061154f602683611070565b915061155a826114f3565b604082019050919050565b6000602082019050818103600083015261157e81611542565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006115e1602483611070565b91506115ec82611585565b604082019050919050565b60006020820190508181036000830152611610816115d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611673602283611070565b915061167e82611617565b604082019050919050565b600060208201905081810360008301526116a281611666565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006116df601d83611070565b91506116ea826116a9565b602082019050919050565b6000602082019050818103600083015261170e816116d2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611771602583611070565b915061177c82611715565b604082019050919050565b600060208201905081810360008301526117a081611764565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611803602383611070565b915061180e826117a7565b604082019050919050565b60006020820190508181036000830152611832816117f6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611895602683611070565b91506118a082611839565b604082019050919050565b600060208201905081810360008301526118c481611888565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611927602183611070565b9150611932826118cb565b604082019050919050565b600060208201905081810360008301526119568161191a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006119b9602283611070565b91506119c48261195d565b604082019050919050565b600060208201905081810360008301526119e8816119ac565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611a25602083611070565b9150611a30826119ef565b602082019050919050565b60006020820190508181036000830152611a5481611a18565b905091905056fea264697066735822122029fb9e3976dc34ea8c2335e8453d923920168f0fce0d170c0de7cdf7757ea4d564736f6c634300081c0033a264697066735822122003ef549fe9f08b32a444d1bcde97eff783a786f1092241eeb863fbfd63cd3dae64736f6c634300081c0033000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042cc8bef111e05f478cdd37950f1c06b0348184a0000000000000000000000009c1b8deb6d89a795bc2e45f86a9af6e034744774
Deployed Bytecode
0x6080604052600436106101185760003560e01c80638e72b23f116100a0578063e486033911610064578063e4860339146103bd578063e74b981b146103fd578063ee4e268714610426578063f088d5471461044f578063f2fde38b1461046b5761011f565b80638e72b23f146102b45780639ead7222146102dd578063be33f6bd1461031a578063d146d31d14610357578063ddf731f3146103945761011f565b80636c197ff5116100e75780636c197ff5146101f7578063715018a61461022057806376f728d814610237578063880af793146102605780638da5cb5b146102895761011f565b806309f72da314610124578063198e2b8a1461016157806331f3efba1461017d57806341528e72146101ba5761011f565b3661011f57005b600080fd5b34801561013057600080fd5b5061014b600480360381019061014691906130d0565b610494565b6040516101589190613116565b60405180910390f35b61017b60048036038101906101769190613196565b610656565b005b34801561018957600080fd5b506101a4600480360381019061019f9190613243565b6109f7565b6040516101b19190613116565b60405180910390f35b3480156101c657600080fd5b506101e160048036038101906101dc91906130d0565b610cb1565b6040516101ee9190613116565b60405180910390f35b34801561020357600080fd5b5061021e60048036038101906102199190613243565b610cfd565b005b34801561022c57600080fd5b506102356112b6565b005b34801561024357600080fd5b5061025e60048036038101906102599190613283565b6112ca565b005b34801561026c57600080fd5b5061028760048036038101906102829190613283565b6112dc565b005b34801561029557600080fd5b5061029e61132f565b6040516102ab91906132bf565b60405180910390f35b3480156102c057600080fd5b506102db60048036038101906102d691906130d0565b611358565b005b3480156102e957600080fd5b5061030460048036038101906102ff9190613283565b6113a4565b60405161031191906132bf565b60405180910390f35b34801561032657600080fd5b50610341600480360381019061033c9190613243565b6113e3565b60405161034e9190613116565b60405180910390f35b34801561036357600080fd5b5061037e600480360381019061037991906130d0565b61169d565b60405161038b9190613116565b60405180910390f35b3480156103a057600080fd5b506103bb60048036038101906103b691906130d0565b61187e565b005b3480156103c957600080fd5b506103e460048036038101906103df91906130d0565b6119bf565b6040516103f49493929190613354565b60405180910390f35b34801561040957600080fd5b50610424600480360381019061041f91906133d7565b611a1c565b005b34801561043257600080fd5b5061044d600480360381019061044891906130d0565b611ace565b005b610469600480360381019061046491906130d0565b611b1a565b005b34801561047757600080fd5b50610492600480360381019061048d91906130d0565b612268565b005b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610567576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff16156105b0576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826002015490506000836001015490506000818473ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610610573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106349190613419565b61063e9190613475565b905061064a83826122eb565b95505050505050919050565b61065e6123c9565b6000848484846040516106709061305b565b61067d9493929190613507565b604051809103906000f080158015610699573d6000803e3d6000fd5b509050600081905060405180608001604052808373ffffffffffffffffffffffffffffffffffffffff168152602001600081526020016000815260200160001515815250600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015560608201518160030160006101000a81548160ff0219169083151502179055509050506005819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663aa60b06b306040518263ffffffff1660e01b815260040161083691906132bf565b600060405180830381600087803b15801561085057600080fd5b505af1158015610864573d6000803e3d6000fd5b5050505060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016108a391906132bf565b602060405180830381865afa1580156108c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e49190613419565b905060008103610920576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101819055503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fd5d05a8421149c74fd223cfc823befb883babf9bf0b0e4d6bf9c8fdb70e59bb4898989896040516109ca9493929190613507565b60405180910390a360003411156109e6576109e5823461240f565b5b5050506109f16129a6565b50505050565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600082600201549050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ad3576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260030160009054906101000a900460ff1615610b1c576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008503610b56576040517f82c4a8c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000836001015490506000818473ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610bad573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd19190613419565b610bdb9190613475565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d2dfa4a85848b6040518463ffffffff1660e01b8152600401610c3e93929190613542565b602060405180830381865afa158015610c5b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c7f9190613419565b90506000610c9482662386f26fc100006129af565b90508082610ca29190613475565b97505050505050505092915050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201549050919050565b610d056123c9565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610dd7576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff1615610e20576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008303610e5a576040517f82c4a8c900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826002015490506000836001015490506000818473ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eba573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ede9190613419565b610ee89190613475565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636d2dfa4a85848a6040518463ffffffff1660e01b8152600401610f4b93929190613542565b602060405180830381865afa158015610f68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f8c9190613419565b90506000610fa182662386f26fc100006129af565b905060008183610fb19190613475565b905082861015610fed576040517ff8ffc0af00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82886002016000828254039250508190555088886001016000828254019250508190555060008211156110e1576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683604051611062906135aa565b60006040518083038185875af1925050503d806000811461109f576040519150601f19603f3d011682016040523d82523d6000602084013e6110a4565b606091505b50509050806110df576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8673ffffffffffffffffffffffffffffffffffffffff166323b872dd33308c6040518463ffffffff1660e01b815260040161111e939291906135bf565b6020604051808303816000875af115801561113d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111619190613622565b611197576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16826040516111bd906135aa565b60006040518083038185875af1925050503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b505090508061123a576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167f697c42d55a5e1fed3f464ec6f38b32546a0bd368dc8068b065c67566d73f32908c8560405161129992919061364f565b60405180910390a35050505050505050506112b26129a6565b5050565b6112be6129d8565b6112c86000612a56565b565b6112d26129d8565b8060078190555050565b6112e46129d8565b66b1a2bc2ec50000811115611325576040517fc99a8b3a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060068190555050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6113606129d8565b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600581815481106113b457600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114b6576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff16156114ff576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008403611539576040517fa096c83800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082600201549050600061155586662386f26fc100006129af565b9050600081876115659190613475565b90506000856001015490506000818673ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156115be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115e29190613419565b6115ec9190613475565b9050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388dc87438683866040518463ffffffff1660e01b815260040161164d93929190613542565b602060405180830381865afa15801561166a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061168e9190613419565b97505050505050505092915050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611770576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff16156117b9576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826001015490506000818373ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611810573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118349190613419565b61183e9190613475565b9050600061184b87610494565b90506000670de0b6b3a764000082846118649190613678565b61186e91906136e9565b9050809650505050505050919050565b6118866129d8565b61188e6123c9565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611960576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff16156119a9576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119b283612b1a565b50506119bc6129a6565b50565b60046020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154908060030160009054906101000a900460ff16905084565b611a246129d8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a8a576040517f9c8d2cd200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611ad66129d8565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611b226123c9565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bf4576040517fceea21b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160030160009054906101000a900460ff1615611c3d576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60003403611c77576040517fa096c83800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008260020154905060008160075411611c92576000611ca1565b81600754611ca09190613475565b5b905060008103611cdd576040517f9876e37400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000846001015490506000818573ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d589190613419565b611d629190613475565b90506000662386f26fc10000670de0b6b3a7640000611d819190613475565b9050600081670de0b6b3a764000086611d9a9190613678565b611da491906136e9565b90506000813411611db55734611db7565b815b90506000611dcc82662386f26fc100006129af565b905060008183611ddc9190613475565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388dc87438b89856040518463ffffffff1660e01b8152600401611e3f93929190613542565b602060405180830381865afa158015611e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e809190613419565b905087811115611f5157879050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a32926c8b89846040518463ffffffff1660e01b8152600401611eec93929190613542565b602060405180830381865afa158015611f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f2d9190613419565b9150611f4082662386f26fc100006129af565b92508282611f4e919061371a565b93505b818a611f5d919061371a565b8c60020181905550808c6001016000828254611f799190613475565b925050819055506000831115612050576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051611fd1906135aa565b60006040518083038185875af1925050503d806000811461200e576040519150601f19603f3d011682016040523d82523d6000602084013e612013565b606091505b505090508061204e576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8a73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161208b92919061374e565b6020604051808303816000875af11580156120aa573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ce9190613622565b612104576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000843411612114576000612121565b84346121209190613475565b5b905060008111156121d15760003373ffffffffffffffffffffffffffffffffffffffff1682604051612152906135aa565b60006040518083038185875af1925050503d806000811461218f576040519150601f19603f3d011682016040523d82523d6000602084013e612194565b606091505b50509050806121cf576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b3373ffffffffffffffffffffffffffffffffffffffff168e73ffffffffffffffffffffffffffffffffffffffff167fc244d500136edffae7025aaf7fbd7a07193ac544a1d0cc3132cf2a32452d340c858560405161223092919061364f565b60405180910390a36122418d613014565b156122505761224f8e612b1a565b5b505050505050505050505050506122656129a6565b50565b6122706129d8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d6906137e9565b60405180910390fd5b6122e881612a56565b50565b600080670de0b6b3a764000090506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a32926c8686856040518463ffffffff1660e01b815260040161235a93929190613542565b602060405180830381865afa158015612377573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061239b9190613419565b905060006123b082662386f26fc100006129af565b905080826123be9190613475565b935050505092915050565b600260015403612405576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600181905550565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000826002015490506000836001015490506000818473ffffffffffffffffffffffffffffffffffffffff16634c0abcdb6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ff9190613419565b6125099190613475565b9050600061251e87662386f26fc100006129af565b90506000818861252e9190613475565b90506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388dc87438786856040518463ffffffff1660e01b815260040161259193929190613542565b602060405180830381865afa1580156125ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125d29190613419565b90508481111561269557849050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636a32926c8786846040518463ffffffff1660e01b815260040161263e93929190613542565b602060405180830381865afa15801561265b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061267f9190613419565b915061269282662386f26fc100006129af565b92505b818860020160008282546126a9919061371a565b92505081905550808860010160008282546126c49190613475565b92505081905550600083111561279b576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168460405161271c906135aa565b60006040518083038185875af1925050503d8060008114612759576040519150601f19603f3d011682016040523d82523d6000602084013e61275e565b606091505b5050905080612799576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016127d692919061374e565b6020604051808303816000875af11580156127f5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128199190613622565b61284f576040517f045c4b0200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000838361285d919061371a565b8a1161286a576000612882565b8383612876919061371a565b8a6128819190613475565b5b905060008111156129325760003373ffffffffffffffffffffffffffffffffffffffff16826040516128b3906135aa565b60006040518083038185875af1925050503d80600081146128f0576040519150601f19603f3d011682016040523d82523d6000602084013e6128f5565b606091505b5050905080612930576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b3373ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff167fc244d500136edffae7025aaf7fbd7a07193ac544a1d0cc3132cf2a32452d340c858560405161299192919061364f565b60405180910390a35050505050505050505050565b60018081905550565b6000670de0b6b3a764000082846129c69190613678565b6129d091906136e9565b905092915050565b6129e0613053565b73ffffffffffffffffffffffffffffffffffffffff166129fe61132f565b73ffffffffffffffffffffffffffffffffffffffff1614612a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a4b90613855565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160030160009054906101000a900460ff1615612bcf576040517fdeaabdc200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000826002015490506000612be6826006546129af565b905060008183612bf69190613475565b90508373ffffffffffffffffffffffffffffffffffffffff16634f6ef09a306040518263ffffffff1660e01b8152600401612c3191906132bf565b600060405180830381600087803b158015612c4b57600080fd5b505af1158015612c5f573d6000803e3d6000fd5b50505050600085600101548573ffffffffffffffffffffffffffffffffffffffff1663670171fd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612cd99190613419565b612ce3919061371a565b9050600086600101819055506000866002018190555060018660030160006101000a81548160ff0219169083151502179055506000831115612de6576000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1684604051612d67906135aa565b60006040518083038185875af1925050503d8060008114612da4576040519150601f19603f3d011682016040523d82523d6000602084013e612da9565b606091505b5050905080612de4576040517ffe8a94f400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505b8473ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612e4392919061374e565b6020604051808303816000875af1158015612e62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e869190613622565b50600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719858b866000807f000000000000000000000000000000000000000000000000000000000000dead426040518863ffffffff1660e01b8152600401612f11969594939291906138b0565b60606040518083038185885af1158015612f2f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f549190613911565b50915091508673ffffffffffffffffffffffffffffffffffffffff1663715018a66040518163ffffffff1660e01b8152600401600060405180830381600087803b158015612fa157600080fd5b505af1158015612fb5573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff167fac1d76749e5447b7b16f5ab61447e1bd502f3bb4807af3b28e620d1700a6ee45828460405161300192919061364f565b60405180910390a2505050505050505050565b600080606460636007546130289190613678565b61303291906136e9565b905060008360010154148061304b575080836002015410155b915050919050565b600033905090565b6123598061396583390190565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061309d82613072565b9050919050565b6130ad81613092565b81146130b857600080fd5b50565b6000813590506130ca816130a4565b92915050565b6000602082840312156130e6576130e5613068565b5b60006130f4848285016130bb565b91505092915050565b6000819050919050565b613110816130fd565b82525050565b600060208201905061312b6000830184613107565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261315657613155613131565b5b8235905067ffffffffffffffff81111561317357613172613136565b5b60208301915083600182028301111561318f5761318e61313b565b5b9250929050565b600080600080604085870312156131b0576131af613068565b5b600085013567ffffffffffffffff8111156131ce576131cd61306d565b5b6131da87828801613140565b9450945050602085013567ffffffffffffffff8111156131fd576131fc61306d565b5b61320987828801613140565b925092505092959194509250565b613220816130fd565b811461322b57600080fd5b50565b60008135905061323d81613217565b92915050565b6000806040838503121561325a57613259613068565b5b6000613268858286016130bb565b92505060206132798582860161322e565b9150509250929050565b60006020828403121561329957613298613068565b5b60006132a78482850161322e565b91505092915050565b6132b981613092565b82525050565b60006020820190506132d460008301846132b0565b92915050565b6000819050919050565b60006132ff6132fa6132f584613072565b6132da565b613072565b9050919050565b6000613311826132e4565b9050919050565b600061332382613306565b9050919050565b61333381613318565b82525050565b60008115159050919050565b61334e81613339565b82525050565b6000608082019050613369600083018761332a565b6133766020830186613107565b6133836040830185613107565b6133906060830184613345565b95945050505050565b60006133a482613072565b9050919050565b6133b481613399565b81146133bf57600080fd5b50565b6000813590506133d1816133ab565b92915050565b6000602082840312156133ed576133ec613068565b5b60006133fb848285016133c2565b91505092915050565b60008151905061341381613217565b92915050565b60006020828403121561342f5761342e613068565b5b600061343d84828501613404565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613480826130fd565b915061348b836130fd565b92508282039050818111156134a3576134a2613446565b5b92915050565b600082825260208201905092915050565b82818337600083830152505050565b6000601f19601f8301169050919050565b60006134e683856134a9565b93506134f38385846134ba565b6134fc836134c9565b840190509392505050565b600060408201905081810360008301526135228186886134da565b905081810360208301526135378184866134da565b905095945050505050565b60006060820190506135576000830186613107565b6135646020830185613107565b6135716040830184613107565b949350505050565b600081905092915050565b50565b6000613594600083613579565b915061359f82613584565b600082019050919050565b60006135b582613587565b9150819050919050565b60006060820190506135d460008301866132b0565b6135e160208301856132b0565b6135ee6040830184613107565b949350505050565b6135ff81613339565b811461360a57600080fd5b50565b60008151905061361c816135f6565b92915050565b60006020828403121561363857613637613068565b5b60006136468482850161360d565b91505092915050565b60006040820190506136646000830185613107565b6136716020830184613107565b9392505050565b6000613683826130fd565b915061368e836130fd565b925082820261369c816130fd565b915082820484148315176136b3576136b2613446565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136f4826130fd565b91506136ff836130fd565b92508261370f5761370e6136ba565b5b828204905092915050565b6000613725826130fd565b9150613730836130fd565b925082820190508082111561374857613747613446565b5b92915050565b600060408201905061376360008301856132b0565b6137706020830184613107565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006137d36026836134a9565b91506137de82613777565b604082019050919050565b60006020820190508181036000830152613802816137c6565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061383f6020836134a9565b915061384a82613809565b602082019050919050565b6000602082019050818103600083015261386e81613832565b9050919050565b6000819050919050565b600061389a61389561389084613875565b6132da565b6130fd565b9050919050565b6138aa8161387f565b82525050565b600060c0820190506138c560008301896132b0565b6138d26020830188613107565b6138df60408301876138a1565b6138ec60608301866138a1565b6138f960808301856132b0565b61390660a0830184613107565b979650505050505050565b60008060006060848603121561392a57613929613068565b5b600061393886828701613404565b935050602061394986828701613404565b925050604061395a86828701613404565b915050925092509256fe608060405234801561001057600080fd5b5060405161235938038061235983398181016040528101906100329190610444565b8181816003908161004391906106dd565b50806004908161005391906106dd565b50505061007261006761009560201b60201c565b61009d60201b60201c565b61008e306b033b2e3c9fd0803ce800000061016360201b60201c565b50506108b9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036101d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101c99061080c565b60405180910390fd5b6101e4600083836102c560201b60201c565b80600260008282546101f6919061085b565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516102a7919061089e565b60405180910390a36102c1600083836102ca60201b60201c565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610336826102ed565b810181811067ffffffffffffffff82111715610355576103546102fe565b5b80604052505050565b60006103686102cf565b9050610374828261032d565b919050565b600067ffffffffffffffff821115610394576103936102fe565b5b61039d826102ed565b9050602081019050919050565b60005b838110156103c85780820151818401526020810190506103ad565b60008484015250505050565b60006103e76103e284610379565b61035e565b905082815260208101848484011115610403576104026102e8565b5b61040e8482856103aa565b509392505050565b600082601f83011261042b5761042a6102e3565b5b815161043b8482602086016103d4565b91505092915050565b6000806040838503121561045b5761045a6102d9565b5b600083015167ffffffffffffffff811115610479576104786102de565b5b61048585828601610416565b925050602083015167ffffffffffffffff8111156104a6576104a56102de565b5b6104b285828601610416565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061050e57607f821691505b602082108103610521576105206104c7565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026105897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261054c565b610593868361054c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b60006105da6105d56105d0846105ab565b6105b5565b6105ab565b9050919050565b6000819050919050565b6105f4836105bf565b610608610600826105e1565b848454610559565b825550505050565b600090565b61061d610610565b6106288184846105eb565b505050565b5b8181101561064c57610641600082610615565b60018101905061062e565b5050565b601f8211156106915761066281610527565b61066b8461053c565b8101602085101561067a578190505b61068e6106868561053c565b83018261062d565b50505b505050565b600082821c905092915050565b60006106b460001984600802610696565b1980831691505092915050565b60006106cd83836106a3565b9150826002028217905092915050565b6106e6826104bc565b67ffffffffffffffff8111156106ff576106fe6102fe565b5b61070982546104f6565b610714828285610650565b600060209050601f8311600181146107475760008415610735578287015190505b61073f85826106c1565b8655506107a7565b601f19841661075586610527565b60005b8281101561077d57848901518255600182019150602085019450602081019050610758565b8683101561079a5784890151610796601f8916826106a3565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b60006107f6601f836107af565b9150610801826107c0565b602082019050919050565b60006020820190508181036000830152610825816107e9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000610866826105ab565b9150610871836105ab565b92508282019050808211156108895761088861082c565b5b92915050565b610898816105ab565b82525050565b60006020820190506108b3600083018461088f565b92915050565b611a91806108c86000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c806370a08231116100ad578063a457c2d711610071578063a457c2d714610321578063a9059cbb14610351578063aa60b06b14610381578063dd62ed3e1461039d578063f2fde38b146103cd5761012c565b806370a082311461028f578063715018a6146102bf57806379cc6790146102c95780638da5cb5b146102e557806395d89b41146103035761012c565b806339509351116100f457806339509351146101eb57806342966c681461021b5780634c0abcdb146102375780634f6ef09a14610255578063670171fd146102715761012c565b806306fdde0314610131578063095ea7b31461014f57806318160ddd1461017f57806323b872dd1461019d578063313ce567146101cd575b600080fd5b6101396103e9565b60405161014691906110f5565b60405180910390f35b610169600480360381019061016491906111b0565b61047b565b604051610176919061120b565b60405180910390f35b61018761049e565b6040516101949190611235565b60405180910390f35b6101b760048036038101906101b29190611250565b6104a8565b6040516101c4919061120b565b60405180910390f35b6101d56104d7565b6040516101e291906112bf565b60405180910390f35b610205600480360381019061020091906111b0565b6104e0565b604051610212919061120b565b60405180910390f35b610235600480360381019061023091906112da565b610517565b005b61023f61052b565b60405161024c9190611235565b60405180910390f35b61026f600480360381019061026a9190611307565b61053b565b005b61027961055c565b6040516102869190611235565b60405180910390f35b6102a960048036038101906102a49190611307565b61056b565b6040516102b69190611235565b60405180910390f35b6102c76105b3565b005b6102e360048036038101906102de91906111b0565b6105c7565b005b6102ed6105d5565b6040516102fa9190611343565b60405180910390f35b61030b6105ff565b60405161031891906110f5565b60405180910390f35b61033b600480360381019061033691906111b0565b610691565b604051610348919061120b565b60405180910390f35b61036b600480360381019061036691906111b0565b610708565b604051610378919061120b565b60405180910390f35b61039b60048036038101906103969190611307565b61072b565b005b6103b760048036038101906103b2919061135e565b61074d565b6040516103c49190611235565b60405180910390f35b6103e760048036038101906103e29190611307565b6107d4565b005b6060600380546103f8906113cd565b80601f0160208091040260200160405190810160405280929190818152602001828054610424906113cd565b80156104715780601f1061044657610100808354040283529160200191610471565b820191906000526020600020905b81548152906001019060200180831161045457829003601f168201915b5050505050905090565b600080610486610857565b905061049381858561085f565b600191505092915050565b6000600254905090565b6000806104b3610857565b90506104c0858285610a28565b6104cb858585610ab4565b60019150509392505050565b60006012905090565b6000806104eb610857565b905061050c8185856104fd858961074d565b610507919061142d565b61085f565b600191505092915050565b610528610522610857565b82610d2a565b50565b6b0295be96e64066972000000081565b610543610ef7565b61055930826aa56fa5b99019a5c8000000610ab4565b50565b6aa56fa5b99019a5c800000081565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6105bb610ef7565b6105c56000610f75565b565b6105d1828261103b565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461060e906113cd565b80601f016020809104026020016040519081016040528092919081815260200182805461063a906113cd565b80156106875780601f1061065c57610100808354040283529160200191610687565b820191906000526020600020905b81548152906001019060200180831161066a57829003601f168201915b5050505050905090565b60008061069c610857565b905060006106aa828661074d565b9050838110156106ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e6906114d3565b60405180910390fd5b6106fc828686840361085f565b60019250505092915050565b600080610713610857565b9050610720818585610ab4565b600191505092915050565b610733610ef7565b61074a30826b0295be96e640669720000000610ab4565b50565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6107dc610ef7565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361084b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161084290611565565b60405180910390fd5b61085481610f75565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c5906115f7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361093d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093490611689565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610a1b9190611235565b60405180910390a3505050565b6000610a34848461074d565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610aae5781811015610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a97906116f5565b60405180910390fd5b610aad848484840361085f565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1a90611787565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610b92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b8990611819565b60405180910390fd5b610b9d83838361105b565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610c23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1a906118ab565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d119190611235565b60405180910390a3610d24848484611060565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d909061193d565b60405180910390fd5b610da58260008361105b565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610e2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e22906119cf565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610ede9190611235565b60405180910390a3610ef283600084611060565b505050565b610eff610857565b73ffffffffffffffffffffffffffffffffffffffff16610f1d6105d5565b73ffffffffffffffffffffffffffffffffffffffff1614610f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6a90611a3b565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61104d82611047610857565b83610a28565b6110578282610d2a565b5050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561109f578082015181840152602081019050611084565b60008484015250505050565b6000601f19601f8301169050919050565b60006110c782611065565b6110d18185611070565b93506110e1818560208601611081565b6110ea816110ab565b840191505092915050565b6000602082019050818103600083015261110f81846110bc565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006111478261111c565b9050919050565b6111578161113c565b811461116257600080fd5b50565b6000813590506111748161114e565b92915050565b6000819050919050565b61118d8161117a565b811461119857600080fd5b50565b6000813590506111aa81611184565b92915050565b600080604083850312156111c7576111c6611117565b5b60006111d585828601611165565b92505060206111e68582860161119b565b9150509250929050565b60008115159050919050565b611205816111f0565b82525050565b600060208201905061122060008301846111fc565b92915050565b61122f8161117a565b82525050565b600060208201905061124a6000830184611226565b92915050565b60008060006060848603121561126957611268611117565b5b600061127786828701611165565b935050602061128886828701611165565b92505060406112998682870161119b565b9150509250925092565b600060ff82169050919050565b6112b9816112a3565b82525050565b60006020820190506112d460008301846112b0565b92915050565b6000602082840312156112f0576112ef611117565b5b60006112fe8482850161119b565b91505092915050565b60006020828403121561131d5761131c611117565b5b600061132b84828501611165565b91505092915050565b61133d8161113c565b82525050565b60006020820190506113586000830184611334565b92915050565b6000806040838503121561137557611374611117565b5b600061138385828601611165565b925050602061139485828601611165565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806113e557607f821691505b6020821081036113f8576113f761139e565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006114388261117a565b91506114438361117a565b925082820190508082111561145b5761145a6113fe565b5b92915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006114bd602583611070565b91506114c882611461565b604082019050919050565b600060208201905081810360008301526114ec816114b0565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061154f602683611070565b915061155a826114f3565b604082019050919050565b6000602082019050818103600083015261157e81611542565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006115e1602483611070565b91506115ec82611585565b604082019050919050565b60006020820190508181036000830152611610816115d4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000611673602283611070565b915061167e82611617565b604082019050919050565b600060208201905081810360008301526116a281611666565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006116df601d83611070565b91506116ea826116a9565b602082019050919050565b6000602082019050818103600083015261170e816116d2565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000611771602583611070565b915061177c82611715565b604082019050919050565b600060208201905081810360008301526117a081611764565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000611803602383611070565b915061180e826117a7565b604082019050919050565b60006020820190508181036000830152611832816117f6565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000611895602683611070565b91506118a082611839565b604082019050919050565b600060208201905081810360008301526118c481611888565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000611927602183611070565b9150611932826118cb565b604082019050919050565b600060208201905081810360008301526119568161191a565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b60006119b9602283611070565b91506119c48261195d565b604082019050919050565b600060208201905081810360008301526119e8816119ac565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000611a25602083611070565b9150611a30826119ef565b602082019050919050565b60006020820190508181036000830152611a5481611a18565b905091905056fea264697066735822122029fb9e3976dc34ea8c2335e8453d923920168f0fce0d170c0de7cdf7757ea4d564736f6c634300081c0033a264697066735822122003ef549fe9f08b32a444d1bcde97eff783a786f1092241eeb863fbfd63cd3dae64736f6c634300081c0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000042cc8bef111e05f478cdd37950f1c06b0348184a0000000000000000000000009c1b8deb6d89a795bc2e45f86a9af6e034744774
-----Decoded View---------------
Arg [0] : _uniRouter (address): 0x0000000000000000000000000000000000000000
Arg [1] : _bancorFormula (address): 0x42cc8bef111E05f478CDd37950F1c06B0348184a
Arg [2] : _feeRecipient (address): 0x9C1B8Deb6d89A795Bc2e45F86A9Af6e034744774
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [1] : 00000000000000000000000042cc8bef111e05f478cdd37950f1c06b0348184a
Arg [2] : 0000000000000000000000009c1b8deb6d89a795bc2e45f86a9af6e034744774
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.